Процесс запуска Powershell, ожидание с тайм-аутом, уничтожение и получение кода выхода

Я хочу многократно выполнить программу в цикле.

Иногда происходит сбой программы, поэтому я хочу убить ее, чтобы правильно запустить следующую итерацию. Я определяю это через тайм-аут.

У меня работает тайм-аут, но я не могу получить код выхода программы, который мне также необходим для определения его результата.

Раньше я не ждал с таймаутом, а просто использовал -wait в Start-Process, но это приводило к зависанию скрипта в случае сбоя запущенной программы. С этой настройкой я мог правильно получить код выхода, хотя.

Я выполняю из 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
    }
}

Как я могу

Начать процессДождитесь, пока он упорядоченно исполнится и закончитсяУбейте его, если он разбился (например, тайм-аут хитов)получить код выхода процесса

Ответы на вопрос(1)

Ваш ответ на вопрос