在powershell中迭代多维哈希表

Lou*_* J. 3 powershell hashtable powershell-3.0

我必须迭代一个多维哈希表,例如:

$ou=@{
      class = @{
              value1 = @{
                       1= ""
                       }
              value2 = ""
              value3 = ""
              }
      }
Run Code Online (Sandbox Code Playgroud)

我所需要的只是一种访问哈希表的每个键(values1、value2...)的方法。我已经尝试过 foreach 和 for 循环,但没有成功。首先,我使用 foreach 循环迭代第一个哈希表:

foreach ($key in $a.keys){
    write-host $key.keys
}
Run Code Online (Sandbox Code Playgroud)

但我很难添加第二个循环。我必须再次迭代密钥吗?为什么 $key.keys 给我所有的钥匙而不是一个接一个的?

Bru*_*tte 5

function keys ($h) { foreach ($k in $h.keys) { $k ; keys $h[$k] }}
Run Code Online (Sandbox Code Playgroud)

将递归遍历所有键。请注意,它对哈希表元素的值而不是进行递归。因此,在您的评论示例中,您可能想在第二级循环中迭代$a[$key].keynot in 。$key.keys