在powershell中迭代多维哈希表

时间:2018-03-28 16:28:26

标签: powershell hashtable powershell-v3.0

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

$ou=@{
      class = @{
              value1 = @{
                       1= ""
                       }
              value2 = ""
              value3 = ""
              }
      }

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

foreach ($key in $a.keys){
    write-host $key.keys
}

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

1 个答案:

答案 0 :(得分:2)

function keys ($h) { foreach ($k in $h.keys) { $k ; keys $h[$k] }}

将通过所有密钥递归。请注意,它会对哈希表元素的进行递归,而不是。因此,在您的评论示例中,您可能希望在第二级循环中迭代$a[$key].key而不是$key.keys