2012-01-17 2 views
2

У меня есть сценарий powershell, который выполняет несколько действий, которые все нужно выполнить последовательно. В настоящее время я использую этот код, чтобы запустить пару внешних программ (предположу, что я нахожусь в правильном каталоге)Powershell - сценарий приостановки во время выполнения внешней программы

.\program1.exe 
.\program2.exe 
.\program3.exe 

Проблема, которую я имею, что они будут все бегут последовательно, не дожидаясь, пока предыдущий не будет закончен. Есть ли способ заставить их ждать, пока не закончится предыдущая программа?

ответ

5

Большинство процессов заставят PowerShell дождаться их завершения, если они не делают что-то напуганное, как установщики Oracle.

Вы можете попробовать:

Start-Process -FilePath program1.exe -Wait

Если это не работает, вам, возможно, придется сделать что-то вроде этого:

& program1.exe 
while ($true) { 
    Start-Sleep -Seconds 1 
    if (-not (Get-Process -Name program1 -ErrorAction SilentlyContinue)) { 
     break 
    } 
} 
"...continue here" 
0
(".\program1.exe", ".\program2.exe", ".\program3.exe") | % { & $_ } 

Стик все программы в массиве. Затем запустите массив через цикл foreach, который их выполняет.

Смежные вопросы