【发布时间】:2016-11-01 13:18:20
【问题描述】:
我是Powershell的新手,没有太多的编程背景,只是想用它来做软件打包。无论如何,我发现了带有 -Wait 参数的 start-process 命令,它适用于大多数事情。我注意到的是,它不仅等待您指定的进程,而且等待任何子进程,即使在主进程不再运行之后也是如此。通常这很好,但我有一个奇怪的情况。我正在使用 start-process 运行一个复杂的 Oracle 批处理文件。批处理文件最终会运行 setup.exe,这是我真正想要等待的,但其他进程也会产生并且永不停止。因此,如果我使用 -wait 参数,即使 setup.exe 不再运行,脚本也不会停止。我发现最接近的是使用这个:
saps -FilePath "Path\config.bat" -ArgumentList "arguments"
Start-Sleep -s 10
Wait-Process -Name "setup"
这可行,但我认为有更好的方法而不必使用超时命令。有什么想法吗?
【问题讨论】:
-
$process = Start-Process $path "arguments" -PassThru; $process.WaitForExit($timeoutMS) -
虽然与接受的答案几乎相同,但上面@MathiasR.Jessen 的评论对我来说很有效。将
Start-Process赋值放在单独的行上运行它并忽略WaitForExit()命令。
标签: powershell