在开始时,我将所有哈希值设置为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
}
}
答案 0 :(得分:0)
扭转你的逻辑。而不是迭代哈希表的键并将它们与$ArrayOfNames
中的值进行比较(我想这是$ColName
来自的地方)迭代名称数组并在更改之前检查哈希表是否包含该键价值:
foreach ($FieldName in $ArrayOfNames) {
if ($Fieldlist.ContainsKey($FieldName)) {
$Fieldlist.$FieldName = 1
}
}