在 powershell 中迭代多维哈希表
Iterating multidimensional hashtables in powershell
我必须迭代一个多维哈希表,例如:
$ou=@{
class = @{
value1 = @{
1= ""
}
value2 = ""
value3 = ""
}
}
我只需要一种方法来访问散列表的每个键(values1、value2、...)。
我已经尝试过 foreach 和 for 循环,但没有成功。
起初我使用 foreach 循环迭代第一个哈希表:
foreach ($key in $a.keys){
write-host $key.keys
}
但我很难添加第二个循环。我是否必须再次迭代键?为什么 $key.keys 把所有的钥匙都还给我,而不是一个接一个地给我?
这个
function keys ($h) { foreach ($k in $h.keys) { $k ; keys $h[$k] }}
将递归遍历所有键。请注意,它在哈希表元素的 value 而不是 key 上递归。因此,在您的评论示例中,您可能希望在 second-level 循环中迭代 $a[$key].key
而不是 $key.keys
in。
我必须迭代一个多维哈希表,例如:
$ou=@{
class = @{
value1 = @{
1= ""
}
value2 = ""
value3 = ""
}
}
我只需要一种方法来访问散列表的每个键(values1、value2、...)。 我已经尝试过 foreach 和 for 循环,但没有成功。 起初我使用 foreach 循环迭代第一个哈希表:
foreach ($key in $a.keys){
write-host $key.keys
}
但我很难添加第二个循环。我是否必须再次迭代键?为什么 $key.keys 把所有的钥匙都还给我,而不是一个接一个地给我?
这个
function keys ($h) { foreach ($k in $h.keys) { $k ; keys $h[$k] }}
将递归遍历所有键。请注意,它在哈希表元素的 value 而不是 key 上递归。因此,在您的评论示例中,您可能希望在 second-level 循环中迭代 $a[$key].key
而不是 $key.keys
in。