Может ли кто-нибудь объяснить приведенное ниже поведение?
Этот скрипт не возвращает ошибок и работает так, как я ожидаю, что он будет работать:
$obj = [PSCustomObject]@{
myProp = 'asd'
}
$propVal = $obj | Select-Object -ExpandProperty myProp -First 1
'prop val 2: ' + $propVal
'No error here: ' + $error
Если я оберну его в Invoke-Command
,он выводит следующее:
prop val 1: asd
"System error" from invoke command: System.Management.Automation.StopUpstreamCommandsException: System error.
at Microsoft.PowerShell.Commands.SelectObjectCommand.ProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
Вот полный скрипт, производящий вышеприведенный вывод.
Invoke-Command -ScriptBlock {
$obj = [PSCustomObject]@{
myProp = 'asd'
}
$propVal = $obj | Select-Object -ExpandProperty myProp -First 1
'prop val 1: ' + $propVal
} -ErrorVariable err
'"System error" from invoke command: ' + $err
Я использую версию PS 5.1.
Я бы очень признателен заобъяснение:
- почему
StopUpstreamCommandsException
поднято? - почему оно вызывается только тогда, когда этот сценарий заключен в
Invoke-Command
?