PowerShell中是否存在允许脚本等待命令完成的等待参数



我试图在PowerShell中使用启动进程安装软件,我希望脚本等待命令完成后再继续下一个命令。我没有经验,我厌倦了下面的剧本,但它不起作用。

Start-Process -Wait -FilePath "C:TempLatitude_5X10_Precision_3550_1.15.0.exe" -ArgumentList "/S" -PassThru

您的Start-Process调用是正确的,但-Wait始终只跟踪直接启动的进程的生存期(在您的情况下为C:TempLatitude_5X10_Precision_3550_1.15.0.exe(。

也就是说,如果目标进程本身产生了另一个进程来执行其任务,然后在该子进程终止之前返回,那么你就倒霉了。

如果可行的话,还需要额外的工作:

  • 如果您知道子进程的名称,可以尝试通过Get-Process查找并跟踪它。

  • 或者,如果您知道任务已完成的间接标志,例如存在目录或注册表项,请查找该标志。


顺便说一句:控制台(-子系统(应用程序可以直接调用进行同步(阻塞(执行(例如,foo.exe bar baz& $fooExePath bar baz(,这是首选方法,因为它将应用程序的输出流连接到PowerShell的流。

最新更新