迭代哈希中的元素并更新其值

时间:2017-12-01 10:57:11

标签: powershell hashtable

在开始时,我将所有哈希值设置为null。 当散列中的名称等于某个名称时,散列值应设置为1。

然而,我收到错误

  

集合被修改,枚举可能无法执行

这真的很愚蠢,因为我没有更改键的值。有什么想法吗?

$Fieldlist = @{
    "Brand Name"   = 0;
    "Product Type" = 0
}
# Loops thru an array
$ArrayOfNames = ("Name1", "Name2", ... ,"Brand Name" ...)
foreach ($FieldName in $Fieldlist.Keys) {
    $Message = $FieldName + " -eq " + $ColName + " ?"
    Write-Host $Message
    if ($FieldName -eq $ColName) {
        Write-Host "-------> Yes, bingo"
        $Fieldlist.$FieldName = 1
    }
}

1 个答案:

答案 0 :(得分:0)

扭转你的逻辑。而不是迭代哈希表的键并将它们与$ArrayOfNames中的值进行比较(我想这是$ColName来自的地方)迭代名称数组并在更改之前检查哈希表是否包含该键价值:

foreach ($FieldName in $ArrayOfNames) {
    if ($Fieldlist.ContainsKey($FieldName)) {
        $Fieldlist.$FieldName = 1
    }
}