我有一個powershell腳本,調用可執行文件來執行一些數據處理,腳本需要從可執行文件中檢索結果。想知道我有什麼選擇,我在板上進行這個進程間通信從.Net EXE返回數據到Powershell
- 可以讓我的可執行文件直接返回一個字符串數組或對象(我不認爲這是可能的)?
- exe文件設置和powershell腳本讀取的易變變量?
- 菌種的可執行文件中的臨時.Net遠程服務器,並有PowerShell的平認爲服務器得到的結果
我有一個powershell腳本,調用可執行文件來執行一些數據處理,腳本需要從可執行文件中檢索結果。想知道我有什麼選擇,我在板上進行這個進程間通信從.Net EXE返回數據到Powershell
您可以將EXE的結果吐出到XML或CSV格式的標準輸出中,並讓PowerShell將其轉換爲[xml]或ConvertFrom-Csv。
可執行文件是以.NET編寫沒什麼區別:這將是一個單獨的進程,因此只對(在兩者沒有特定的支持)從一個進程將數據傳遞到另一個的機制是可用的:
(也可以使用理論上標準誤差,但是這將是濫用它對於沒有附加功能)
的標準輸出的方法是最簡單的:在該exe使用Console.WriteLine
(這是一個捷徑Console.Out.WriteLine
),然後解析PowerShell中的字符串:
MyExe | Foreach-Object {
# Do something with $_ which will be a string
}
很明顯,可以使用任何可以編碼爲字符串的數據格式。調用腳本也可以將整個輸出積累到一個單一的值,並一次處理所有的輸出。
管道是爲進程間通信而設計的,儘管我不知道powershell腳本是否可以進行這種通信 –
另請參閱此主題:http://stackoverflow.com/questions/8506404/capture-return-value -of-an-net-exe-in-an-bat-file –
加上這個:http://social.microsoft.com/Forums/sl-SI/Offtopic/thread/691128c5-72a5-48c1-971e-50c6bccd8165 Man ,你沒有長時間的Google解決方案,對嗎?這兩個結果都出現在第一個谷歌頁面下的「.net exe結果」:) –