В.
О. Вспомните обычную ошибку в PowerShell:
Throw «Error Here»
Процесс PowerShell выдает сообщение, и пользователю становится известно об ошибке.
Теперь рассмотрим вариант:
PowerShell { Throw «Error from within» }
Неизвестная ошибка не приведет к остановке родительского процесса PowerShell. Самое простое решение — назначить многоуровневый механизм обработки ошибок для PowerShell:
$Global:ErrorActionPreference = «Stop» PowerShell { Throw «Error from within» }
Теперь ошибка в подпроцессе будет по-прежнему выдавать ошибку в родительском процессе PowerShell.
Другой вариант — отслеживать состояние ошибки с помощью переменных и пересылать эти переменные назад как результат вызванного процесса PowerShell. Например, в подпроцессе PowerShell можно использовать:
$Global:ErrorActionPreference = «Stop» $ErrorState = 0 $ErrorMessage = «No Error» Try{ Throw «Error happened here» } Catch { $ErrorState = 1 $ErrorMessage = $Error[0].Exception.ToString() }
Обратите внимание, что в случае ошибки состояние ошибки и собственно сообщение вставлены в переменную. Затем их можно передать вызывающему процессу PowerShell.