В.
О. Вспомните обычную ошибку в 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.