this questionに続いて、Select-Objectは処理の一部として入力をnullに設定するようです。これは私にとっては間違っているようです。ここで私は何をしようとしているのです:Select-Objectは入力を変更しますか?
$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
であるということです。少し調べた後、最初にSelect-Object
が実行された後に$input
が$null
に設定されていることがわかります。たとえば、2つのSelect-Object
行の間に$input | Get-Member
を挿入すると、「get-memberコマンドレットにオブジェクトが指定されていません」というエラーがスローされます。
ここでは何が起こっていますか?
また、Select-Objectは新しいオブジェクトを作成し、求めたプロパティの値をコピーします。 – JasonMArcher