PSObject
を介してリモート セッションに渡されている NoteProperties が定義されている にアクセスするのが困難ですInvoke-Command
。この目的のためにオブジェクトを作成する理由は、リモート セッションで 2 つの個別の情報にアクセスする必要があるためですが、PowerShell では単一のInputObject
.
私のコードは次のようになります。
$sessionInput = new-object -TypeName System.Object
$sessionInput | Add-Member -MemberType NoteProperty -Name NoteProperty1 -Value @("some", "value")
$sessionInput | Add-Member -MemberType NoteProperty -Name NoteProperty2 -Value @("some", "other", "value)
$session = New-PSSession -ComputerName my-computer -Credential (Get-Credential)
Invoke-Command -Session $session -InputObject $sessionInput {
$input #1
$input | Get-Member #2
$input.NoteProperty1 #3
$input.NoteProperty1 | Get-Member #4
}
上記の番号付きの行ごとに、次の出力が得られます。
1.$input
そのため、まず、変数をコンソールにダンプする通常の手法を試しました。これにより、プロパティが期待値で渡されることが確認されました。
NoteProperty1 : {some, value}
NoteProperty2 : {some, other, value}
PSComputerName : my-computer
RunspaceId : d1f35c8b-f631-4caa-bae0-f7c0066bbd55
PSShowComputerName : True
2.$input | Get-Member
これにより、以前の試行よりもわずかに多くの情報が生成されました。
TypeName: Deserialized.System.Object
WARNING: column "PSComputerName" does not fit into the display and was removed.
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString(), string ToString(string format, System.IFormatProvider formatProvider)
NoteProperty1 NoteProperty Deserialized.System.String[] NoteProperty1=some val...
NoteProperty2 NoteProperty Deserialized.System.String[] NoteProperty2=some oth...
最後の 2 行は、リモート セッションによって受信されたオブジェクトに NoteProperty が存在することを明確に示していることに注意してください。これらのすべての言及はDeserialized
、私の興味をそそり始めています...
3.$input.NoteProperty1
最初の 2 つは運が良かったので、自分NoteProperty1
自身を調べてみました。ただし、このプロパティの値は null のようです。上記の行を使用してコンソールに何も書き込まれない場合は、$input.NoteProperty1 -eq $null
True を返します。
4.$input.NoteProperty1 | Get-Member
そのため、最後に、 をNoteProperty1
介して値を直接検査しようとしGet-Member
ましたが、「get-member コマンドレットにオブジェクトが指定されていません。」というメッセージが表示されて惨めに失敗しました。これは、Get-Member に null オブジェクトが渡されたことと一致しています。
ヘルプ!
だから、私は今、完全に途方に暮れています. 両方に期待値があり、値がありません。NoteProperties の必要性を排除するために、これを少し異なる方法で書くことができると思いますが、ここで何が起こっているのか知りたいです!