You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中更新哈希表数组内哈希表值的问题排查

问题原因及解决办法

问题根源

你创建哈希表数组的方式@(@{})*$idRange.Count存在本质问题:这种写法并没有生成$idRange.Count个独立的哈希表,而是把同一个哈希表的引用复制了多次放进数组里。数组里的所有元素本质上指向内存中同一个哈希表对象,所以每次循环修改其中一个元素的id属性时,所有元素都会同步变化——因为它们本来就是同一个东西。

正确实现方式

方式一:通过循环逐个创建独立哈希表

[array] $idRange= @(1, 2, 3)
[hashtable[]] $aoo = @()
foreach ($id in $idRange) {
    # 每次循环都新建一个哈希表
    $newHash = @{}
    $newHash['id'] = $id
    $aoo += $newHash
}

方式二:用For循环初始化数组的每个元素

[array] $idRange= @(1, 2, 3)
# 先创建指定长度的空哈希表数组
[hashtable[]] $aoo = New-Object hashtable[] $idRange.Count
for ($i=0; $i -lt $idRange.Count; $i++) {
    # 为数组的每个索引位置新建哈希表
    $aoo[$i] = @{}
    $aoo[$i]['id'] = $idRange[$i]
}

验证结果

运行上述任意一种写法,都会得到你预期的结果:

@(@{'id'=1}, @{'id'=2}, @{'id'=3})

内容的提问来源于stack exchange,提问作者mitjajez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:43:11