powershell sas background-process

Controlar trabajos en segundo plano en scripts de PowerShell 4



sas background-process (1)

El operador de llamada & incendios y olvida. Prueba Start-Process con el interruptor -Wait . Tratar:

Start-Process -FilePath "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe" -ArgumentList "-sysin `"D:/EDM/SASPROGRAMS/ABC.sas`" -nosplash -log D:/EDM/SASLOGS -work D:/SASWork" -NoNewWindow

Recuerde escapar de las dobles comillas (usando un backtick) dentro de la cadena de argumentos.

Tengo una serie de programas SAS que ejecuto en segundo plano usando una secuencia de comandos de PowerShell iniciada desde el Programador de tareas.

Me gustaría que cada programa termine primero antes de comenzar el otro.

He intentado muchos enfoques diferentes utilizando los ejemplos que he encontrado en este sitio, pero ninguno parece funcionar. Lo que específicamente no puedo encontrar es el estado de un trabajo que se ejecuta en segundo plano y luego uso ese estado en una declaración condicional para verificar que el primer programa que se ejecuta en segundo plano se complete antes de iniciar el segundo programa.

Por ejemplo, si uso:

$job01 = Start-Job -ScriptBlock { & "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe" -sysin "D:/EDM/SASPROGRAMS/ABC.sas" -nosplash -log D:/EDM/SASLOGS -work D:/SASWork }

entonces

Get-Job

$job01 que $job01 está Completado justo después de emitir Get-Job , cuando el programa SAS en sí tarda unos 10 minutos en completarse.

¿Qué cmdlet puedo usar para determinar cuándo se ha completado el programa SAS que se ejecuta en segundo plano?