PSObjectのメンバーである配列の要素であると思ったものを削除しようとしています。
$obj = New-Object psobject
$obj | Add-Member -MemberType NoteProperty -Name member -Value @()
$obj.member += $null
$obj.member[0] = "A"
$obj.member += $null
$obj.member[1] = "B"
ここまでは順調ですね。$ obj.memberは、個々の要素を呼び出し、-joinを使用して文字列に変換できるという点で配列のように動作します。ただし、要素を削除しようとすると、$obj.memberが配列ではないことがわかります。$ obj.member | gmは、それが文字列であることを通知し、$ obj.member.removeRange()を呼び出すと、次のエラーが発生します。[System.Object[]]に「removeRange」という名前のメソッドが含まれていません。
つまり、文字列のように見え、配列のように動作し、実際にはオブジェクトです。
オブジェクトのNoteProperty型メンバーの値を@()として定義すると、そのメンバーは配列になるという印象を受けました。明らかにこれは正しくありませんが、参加できたため、私には思いもよらなかったのです。要素。
ここで何が起こっているのか説明してください。
最終的には、オブジェクトメンバーを配列にしようとしているので、要素を追加および削除できます。
ありがとう!!