После этого вопроса кажется, что 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 не указан объект».
Что здесь происходит?