PowerShell中运行多个不终止exe是否阻塞及实现方法咨询
阻塞问题结论
你给出的写法一定会出现执行阻塞。PowerShell默认调用外部可执行程序时为同步执行模式,会等待目标程序进程退出后才会继续执行下一行代码。如果C:\App.exe不会自行终止,脚本会永久停在第一行,永远不会触发C:\App2.exe的启动。
正确实现方案
要实现两个无自终止特性的exe并行启动,使用PowerShell内置的Start-Process命令即可,该命令默认会以异步方式启动目标程序,不会阻塞后续代码执行:
# 基础启动写法 Start-Process -FilePath "C:\App.exe" Start-Process -FilePath "C:\App2.exe"
如果需要给exe传递启动参数,增加-ArgumentList参数即可:
# 带启动参数的写法,示例给App.exe传递 -config C:\config.ini 参数 Start-Process -FilePath "C:\App.exe" -ArgumentList "-config C:\config.ini" Start-Process -FilePath "C:\App2.exe"
如果需要启动后不弹出新的控制台窗口、后台静默运行,增加-WindowStyle Hidden参数:
# 静默后台启动写法 Start-Process -FilePath "C:\App.exe" -WindowStyle Hidden Start-Process -FilePath "C:\App2.exe" -WindowStyle Hidden
如果后续需要管理启动的两个进程(比如手动终止),可以增加-PassThru参数接收进程对象:
# 保存进程对象方便后续管理 $app1Process = Start-Process -FilePath "C:\App.exe" -PassThru $app2Process = Start-Process -FilePath "C:\App2.exe" -PassThru # 后续需要终止进程时执行 # $app1Process | Stop-Process -Force # $app2Process | Stop-Process -Force
内容的提问来源于stack exchange,提问作者zxcv
相关产品推荐
相关产品推荐

