如何在Powershell中输出多个哈希表

时间:2012-06-07 16:22:13

标签: powershell

我有一个键/值对哈希表的哈希表(来自.ini文件)。它看起来像这样:

Name                           Value                                                                   
----                           -----                                                                   
global                         {}                                                                      
Variables                      {event_log, software_repo}                                               
Copy Files                     {files.mssql.source, files.utils.source, files.utils.destination, fil...

如何在一个哈希表中输出所有键/值对,而不是这样做?

$ini.global; $ini.variables; $ini."Copy Files"

2 个答案:

答案 0 :(得分:2)

鉴于$hh是哈希表的哈希表,您可以使用循环:

foreach ($key in $hh.keys)
{
  Write-Host $hh[$key]
}

答案 1 :(得分:2)

您可以轻松编写一个函数来通过哈希进行递归:

$hashOfHash = @{
    "outerhash" = @{
        "inner" = "value1"
        "innerHash" = @{
            "innermost" = "value2"
        }
    }
    "outer" = "value3"
}

function Recurse-Hash($hash){
    $hash.keys | %{
        if($hash[$_] -is [HashTable]){ Recurse-Hash $hash[$_]  }
        else{
            write-host "$_ : $($hash[$_])"
        }
    }
}

Recurse-Hash $hashOfHash

以上只是write-host关键值,但你明白了。