按照这个问题,似乎 Select-Object 将其输入设置为 null 作为其处理的一部分。这对我来说似乎是错误的。这是我正在尝试做的事情:
$sessionInput = new-object -TypeName System.Object
$sessionInput | Add-Member -MemberType NoteProperty -Name Foo -Value $foo
$sessionInput | Add-Member -MemberType NoteProperty -Name Bar -Value $bar
Invoke-Command -Session $session -InputObject $sessionInput {
$foo = $input | Select-Object -ExpandProperty Foo
$bar = $input | Select-Object -ExpandProperty Bar
# Expected: $foo, $bar inside the session = $foo, $bar outside the session
}
实际发生的是它只有$foo
它的期望值,并且$bar
总是$null
. 经过一番调查,事实证明这$input
是$null
在第一次Select-Object
运行之后设置的。例如,$input | Get-Member
在两Select-Object
行之间插入会引发错误,指出“没有为 get-member cmdlet 指定对象”。
这里发生了什么?