我试图创建一个自定义对象数组(pscustomobject
),现在我尝试使用for循环更改不同自定义对象的某些值。但它似乎不起作用。这是我试过的:
$obj = @([pscustomobject]@{value=0;type="D";used=$false})
$arr1 = @($obj) * 10
for($v = 0; $v -lt 4; $v++){
$arr1[$v].value = ($v+1)
$arr1[$v].type ="bubble"
}
结果是:
value type used
----- ---- ----
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
4 bubble False
但我希望结果如下:
value type used
----- ---- ----
1 bubble False
2 bubble False
3 bubble False
4 bubble False
4 D False
4 D False
4 D False
4 D False
4 D False
4 D False
这只是一个剪辑,我只是尝试了一些东西。但我有点恼火,我不明白......对不起,我认为这很容易思考,但是看不到什么......我仍然是PS noob ... : - /
编辑:使用PSv3,但我认为这并不重要......
答案 0 :(得分:3)
此:
$arr1 = @($obj) * 10
没有创建10个新对象。它创建了10个对同一对象的引用。
如果你这样做,请注意区别:
$arr1 = 1..10 |% {[pscustomobject]@{value=0;type="D";used=$false}}
for($v = 0; $v -lt 4; $v++){
$arr1[$v].value = ($v+1)
$arr1[$v].type ="bubble"
}
$arr1
value type used
----- ---- ----
1 bubble False
2 bubble False
3 bubble False
4 bubble False
0 D False
0 D False
0 D False
0 D False
0 D False
0 D False