我正在使用PowerShell腳本來執行控制檯應用程序,我試圖從那裏重定向標準輸出和標準錯誤。 我使用的代碼如下:PowerShell,流在運行外部進程時處理輸出和錯誤
$ProcessInfo = New-Object System.Diagnostics.ProcessStartInfo
$ProcessInfo.FileName = "myExe.exe"
$ProcessInfo.Arguments = "bla bla bla"
$ProcessInfo.RedirectStandardError = $true
$ProcessInfo.RedirectStandardOutput = $true
$ProcessInfo.UseShellExecute = $false
$Process = New-Object System.Diagnostics.Process
$Process.StartInfo = $ProcessInfo
$Process.Start() | Out-Null
$output = $Process.StandardOutput.ReadToEnd()
$errors = $Process.StandardError.ReadToEnd()
$Process.WaitForExit()
$output
$errors
return $Process.ExitCode
到目前爲止好,如果我有一個錯誤,我可以看到它重定向到我PowerShell控制檯,如果我有它輸出也被重新定向。 問題是這個過程需要10分鐘,同時我們不知道發生了什麼。
有沒有什麼辦法可以在PowerShell中我可以流輸出和錯誤的內容,當進程正在運行?在純.NET中,我們可以訂閱Process類的事件,我可以在PowerShell中執行相同的操作嗎?
只是一個快速的評論。不要考慮在進程中調用'WaitForExit',因爲直到進程完成後纔會生成輸出。 –