在 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.keysin。