2013-01-23 61 views
0

我有一個powershell腳本,調用可執行文件來執行一些數據處理,腳本需要從可執行文件中檢索結果。想知道我有什麼選擇,我在板上進行這個進程間通信從.Net EXE返回數據到Powershell

  • 可以讓我的可執行文件直接返回一個字符串數組或對象(我不認爲這是可能的)?
  • exe文件設置和powershell腳本讀取的易變變量?
  • 菌種的可執行文件中的臨時.Net遠程服務器,並有PowerShell的平認爲服務器得到的結果
+0

管道是爲進程間通信而設計的,儘管我不知道powershell腳本是否可以進行這種通信 –

+0

另請參閱此主題:http://stackoverflow.com/questions/8506404/capture-return-value -of-an-net-exe-in-an-bat-file –

+0

加上這個:http://social.microsoft.com/Forums/sl-SI/Offtopic/thread/691128c5-72a5-48c1-971e-50c6bccd8165 Man ,你沒有長時間的Google解決方案,對嗎?這兩個結果都出現在第一個谷歌頁面下的「.net exe結果」:) –

回答

1

您可以將EXE的結果吐出到XML或CSV格式的標準輸出中,並讓PowerShell將其轉換爲[xml]或ConvertFrom-Csv。

0

可執行文件是以.NET編寫沒什麼區別:這將是一個單獨的進程,因此只對(在兩者沒有特定的支持)從一個進程將數據傳遞到另一個的機制是可用的:

  • 從該exe返回值:整數。
  • exe的標準輸出:一個字符串(通常在換行符上分割成單獨的行,因此被視爲一個數組)。

(也可以使用理論上標準誤差,但是這將是濫用它對於沒有附加功能)

的標準輸出的方法是最簡單的:在該exe使用Console.WriteLine(這是一個捷徑Console.Out.WriteLine ),然後解析PowerShell中的字符串:

MyExe | Foreach-Object { 
    # Do something with $_ which will be a string 
} 

很明顯,可以使用任何可以編碼爲字符串的數據格式。調用腳本也可以將整個輸出積累到一個單一的值,並一次處理所有的輸出。