我目前正在开发包含
行的PowerShell脚本 $process1 = Start-Process -FilePath ($exePath1) -PassThru -RedirectStandardError ($logPath1)
启动长时间运行的进程并将进程的StandardError重定向到日志文件。我的问题是,这显然也会干扰ExitCode。
$process1.ExitCode
进程退出后,返回null。如果我删除“RedirectStandardError($ logPath1)”,则ExitCode返回我的虚拟程序应该返回的值。
我应该做些不同的事吗?我希望能够启动该过程(将StandardError重定向到日志文件以进行诊断),等待几秒钟以确保它不会崩溃,并在它发生的情况下检索ErrorCode。
答案 0 :(得分:1)
如果您需要等待该过程,并且您没有以其他用户身份运行它:
$StartParams = @{
FilePath = $exePath1
RedirectStandardError = $logPath1
PassThru = $True
Wait = $True
}
$ReturnCode = (Start-Process @StartParams).ExitCode
由于它是长期运行的,这里是PSJobs的另一种方法:
$Job = Start-Job -ScriptBlock {
$StartParams = @{
FilePath = $exePath1
RedirectStandardError = $logPath1
PassThru = $True
Wait = $True
}
(Start-Process @StartParams).ExitCode
}
If ($Job.State -eq 'Completed')
{
$ReturnCode = Receive-Job -Job $Job
}