【发布时间】:2014-04-23 08:43:04
【问题描述】:
我正在使用 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 中做同样的事情吗?
【问题讨论】:
标签: powershell process