PowerShell中更新对象数组指定元素属性失败该如何解决?
问题原因
你写的代码无法生效是PowerShell的**成员枚举(Member Enumeration)**特性导致的:
- 当你调用
$results.type时,PowerShell会自动遍历数组中所有元素,把每个元素的Type属性的值提取出来,生成一个全新的普通值数组,这个新数组和原$Results对象数组没有引用关联 - 你修改
$results.type[100]本质改的是这个临时生成的新数组的对应位置值,修改完全不会同步到原$Results数组里的对象,所以看起来没有生效
正确写法
注意PowerShell的数组默认从0开始索引,如果你要修改的是逻辑上第100个元素,对应索引是99;如果你明确要修改索引为100的元素,把下标换成100即可:
# 修改逻辑上第100个元素的Type属性为y $Results[99].Type = 'y'
这个写法是先定位到$Results数组里对应下标的原对象,再直接修改该对象的Type属性,修改会直接作用到原对象上。
内容的提问来源于stack exchange,提问作者dcaz
相关产品推荐
相关产品推荐

