我要求在运行较长时间的进程中获得同步输出,因为我创建了以下简单脚本。
我已将以下代码保存在一个名为testout.ps1
的文件中。
for ($i=0; $i -le 10; $i++) {
Start-Sleep -Seconds 1
Write-Output "hello $i"
}
然后从下面的脚本中调用上面保存的文件(testout.ps1
)
$COB = New-Object System.Diagnostics.ProcessStartInfo
$COB.FileName = "powershell.exe"
$COB.RedirectStandardError = $true
$COB.RedirectStandardOutput = $true
$COB.UseShellExecute = $false
$COB.CreateNoWindow = $True
$COB.Arguments = "Desktop\testout.ps1"
$COBProc = New-Object System.Diagnostics.Process
$COBProc.StartInfo = $COB
$COBProc.Start() | Out-Null
#@@@@Write-Output "Execution started"
$stdout = $COBProc.StandardOutput.ReadToEnd()
#@@@@Write-Output "Execution Output"
$stderr = $COBProc.StandardError.ReadToEnd()
Write-Output "stdout: $stdout"
期望是它将在进程开始时开始流输出,但在结束过程后给出完整的信息。