处理在该哈希表的枚举内添加到哈希表以使其在枚举中包含该添加项的最佳方法是什么?
我喜欢一些东西: foreach ($key in $groups.GetEnumerator() | Sort-Object Name -descending) { if (something) { groups.add("test","test2") } }
我希望它在枚举中使用新添加的项目,而不是一遍又一遍地调用其中包含它的函数,这会杀死我的内存资源并导致影响写入 export-csv 调用的内容的问题。
处理在该哈希表的枚举内添加到哈希表以使其在枚举中包含该添加项的最佳方法是什么?
我喜欢一些东西: foreach ($key in $groups.GetEnumerator() | Sort-Object Name -descending) { if (something) { groups.add("test","test2") } }
我希望它在枚举中使用新添加的项目,而不是一遍又一遍地调用其中包含它的函数,这会杀死我的内存资源并导致影响写入 export-csv 调用的内容的问题。
我认为当您更新与 foreach 一起行走的哈希时,powershell 会引发错误。
将散列的键写入数组:
$stack = @($groups.keys)
然后从该列表中“转移”一个键以使其工作:
while ($stack) {
$item,$stack = $stack
DoStuffHere()
}
最后,在 DoStuffHere 中,您需要将一个项目添加到 HASH并将新密钥推送到堆栈上以便它可以工作。
$groups.add($newkey,$newval)
$stack = $stack,$newkey
这样,您就不必担心 powershell 的自动行为无法按照您想要的方式工作。