我正在尝试删除我认为是 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 类型成员的值定义为 @(),则该成员将是一个数组——显然这不是真的,但我从未想过,因为我能够加入元素。
请解释这里发生了什么。
最终,我试图让一个 Object 成员成为一个数组,这样我就可以添加和删除元素。
谢谢!!