В.

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