我试图在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的流。