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>

Enter your comment. Wiki syntax is allowed:
 
  • ms_windows_ms_sql/powershell_exe_files_in_try_catch.1621935205.txt
  • Last modified: 2021/05/25 09:33
  • by admin