2011-02-14 31 views
18

Deseo ejecutar varias secuencias de comandos externas simultáneamente en PowerShell y luego esperar a que todas ellas finalicen antes de continuar. Actualmente estoy usando el comando 'start-process -NoNewWindow ...' que recorre todos los procesos hijos pero luego finaliza.Esperando en PowerShell para que finalicen todos los procesos secundarios

He encontrado muchas maneras de esperar que termine 1 proceso (esto es obviamente trivial) pero ninguno de ellos parece funcionar como una solución para mi problema.

Tener un equivalente de UNIX version en PowerShell definitivamente sería lo que estoy buscando.

+0

Unix le dan posibilidades mucho mejor sería que Powershell: Python, golpe, Perl. ¡Piensa más simple! –

+0

¿Dijiste que resolviste tu problema con trabajos? ¿Estaría dispuesto a compartir la solución? – lit

+0

Ahora puede ejecutar PowerShell en UNIX. https://github.com/PowerShell/PowerShell – lit

Respuesta

29

Y no se olvide de probablemente la manera más directa de hacer esto para los procesos Mulitple - Wait-Process ej .:

$procs = $(Start-Process Notepad.exe -PassThru; Start-Process Calc.exe -PassThru) 
$procs | Wait-Process 
+2

+1 Keith. Me perdí completamente el proceso de espera. Puede ser porque nunca lo he usado :) – ravikanth

+0

Sí, es un práctico cmdlet de vez en cuando. :-) –

+0

'Wait-Process' funciona sin problemas para procesos múltiples, sin embargo, supongo que no puede informar información de estado en tiempo real como el número de procesos secundarios que se están ejecutando actualmente y el único control que obtiene es el parámetro' Timeout'. – jaccus

5

¿Revisó la función de trabajos en segundo plano en PowerShell v2?

$job = Start-Job -Name "Proc1" -ScriptBlock { Sleep 10000 } 
Wait-Job -Job $job 

Además, Start-Process tiene un parámetro llamado -wait. Cuando se especifica, Start-Process esperará a que el niño salga.

Start-Process -FilePath calc.exe -Wait 
+0

-El interruptor de espera no es realmente útil cuando se trata de múltiples procesos. Logré resolver mi problema usando trabajos, son una gran herramienta. ¡Gracias! – jaccus

Cuestiones relacionadas