技术咨询:PowerShell调用运算符`&`是否等待命令执行完成?
PowerShell调用运算符
&的等待行为说明 调用运算符&默认会同步等待外部可执行文件执行完成,但存在两种常见例外场景会让你误以为它未等待:
- GUI类程序:像记事本(notepad.exe)、资源管理器这类GUI程序,启动后主进程会立即退出,实际界面由后台子进程维护。此时PowerShell会判定调用的进程已结束,继续执行后续脚本,不会等待GUI窗口关闭。
- 自身带异步逻辑的程序:如果被调用的可执行文件内部采用异步方式启动任务,且自身启动后立即退出,PowerShell只会等待这个主进程结束,不会追踪它启动的子进程。
如果你的自动化流程遇到了不等待的问题,可以用以下两种方式强制等待进程完成:
- 使用
Start-Process并添加-Wait参数:
Start-Process -FilePath $pathToExecutable -Wait
- 捕获进程对象并调用等待方法:
$process = Start-Process -FilePath $pathToExecutable -PassThru $process.WaitForExit()
内容的提问来源于stack exchange,提问作者hyt
相关产品推荐
相关产品推荐

