This is an old revision of the document!
Powershell некорректно обрабатывает коды выхода из запущенных exe-файлов.
Допустим у нас есть команда, которая возвращает ошибку и мы хоти ее обработать с помощью Try-Catch.
Вопреки интуитивному ожиданию такая конструкция не сработает:
try { run_buggy_executive.exe run_somthing_else.exe } catch { Wtite-Host "We got an error!!!" }
Не сработает. Мы не получим сообщения We got an error!!! при ненулевом коде возврата из run_buggy_executive.exe, а запущены будут оба исполняемых файла (или команды).
Как же быть?
Вариантов несколько (https://stackoverflow.com/questions/9948517/how-to-stop-a-powershell-script-on-the-first-error):
- Вручную проверять код выхода:
try { doSomething -arg myArg if (-not $?) {throw "Failed to doSomething"} } catch { Write-Host -Message "We have a problem. $PSItem" }
<code>
Discussion