一旦所有“其他.exe排除”都完成,我将尝试继续执行我的主脚本
示例:
$Nb = 3
for($i=1;$i -le $Nb;$i++){
Start-Process -FilePath "$DirectoryContainingEXE\Test$i\test$i.exe"
}
#Start-Sleep -Seconds 60
Write-Host "We are done"
一旦test1.exe,test2.exe和test3.exe控制台消失(我不能使用Start-Sleep,因为我忽略它要花多少钱),我就需要打印“我们完成了”消息。
注意:我正在使用PS2EXE
请帮助!
答案 0 :(得分:1)
使用-PassThru
启动进程时,请使用参数Start-Process
,以便获取进程ID。
之后,您可以检查每个进程ID(如果仍在运行)。
#Start processes
[System.Collections.ArrayList]$Processes = @()
for ($i = 0; $i -lt 5; $i ++)
{
$Processes += Start-Process -FilePath powershell.exe -ArgumentList "-Command Start-Sleep -Seconds 5; exit" -PassThru
}
#Wait for processes
[System.Int16]$FinishedProcesses = 0
while ($FinishedProcesses -ne $Processes.Count)
{
$FinishedProcesses = 0
foreach ($Process in $Processes)
{
if (-not (Get-Process -Id $Process.Id -ErrorAction SilentlyContinue))
{
$FinishedProcesses ++
}
}
}
Write-Output -InputObject 'We are done'