Proceso de inicio de Powershell, esperar con tiempo de espera, matar y obtener el código de salida

Quiero ejecutar repetidamente un programa en un bucle.

A veces, el programa se bloquea, por lo que quiero matarlo para que la próxima iteración pueda comenzar correctamente. Determino esto a través del tiempo de espera.

Tengo el tiempo de espera funcionando pero no puedo obtener el código de salida del programa, que también necesito para determinar su resultado.

Antes, no esperaba con el tiempo de espera, solo usaba -wait en Start-Process, pero esto hacía que el script se bloqueara si el programa iniciado fallaba. Sin embargo, con esta configuración pude obtener correctamente el código de salida.

Estoy ejecutando desde ISE.

for ($i=0; $i -le $max_iterations; $i++)
{
    $proc = Start-Process -filePath $programtorun -ArgumentList $argumentlist -workingdirectory $programtorunpath -PassThru
    # wait up to x seconds for normal termination
    Wait-Process -Timeout 300 -Name $programname
    # if not exited, kill process
    if(!$proc.hasExited) {
        echo "kill the process"
        #$proc.Kill() <- not working if proc is crashed
        Start-Process -filePath "taskkill.exe" -Wait -ArgumentList '/F', '/IM', $fullprogramname
    }
    # this is where I want to use exit code but it comes in empty
    if ($proc.ExitCode -ne 0) {
       # update internal error counters based on result
    }
}

Cómo puedo

Iniciar un procesoEspere a que se ejecute ordenadamente y termineMátalo si está bloqueado (p. Ej., Tiempo de espera excedido)obtener el código de salida del proceso

Respuestas a la pregunta(1)

Su respuesta a la pregunta