Powershell 通过其键访问嵌套的hasttables

Powershell 通过其键访问嵌套的hasttables,powershell,Powershell,我尝试使用嵌套哈希表来获得特定的值(数字)。 哈希表如下所示 $Hashtable = @{ 'Feature1' = @{ 'Audit' = 1 'Block' = 2 'Change' = 3 } 'Feature2' = @{ 'Audit' = 4 'Block' = 5 'Change' = 3 } } 我想通过键查找访问哈希表。 第一个例子很好用

我尝试使用嵌套哈希表来获得特定的值(数字)。 哈希表如下所示

$Hashtable = @{
    'Feature1' = @{
        'Audit'  = 1
        'Block'  = 2
        'Change' = 3
    }
    'Feature2' = @{
        'Audit'  = 4
        'Block'  = 5
        'Change' = 3
    }
}
我想通过键查找访问哈希表。 第一个例子很好用

$Hashtable['Feature1']['Audit', 'Block']
1
2
指定多个关键点也很好

$Hashtable['Feature1', 'Feature2']

Name                           Value
----                           ---- -
Block                          2
Change                         3
Audit                          1
Block                          5
Change                         3
Audit                          4
但是,如果在第一个哈希表中指定多个键,则似乎无法访问嵌套的哈希表

$Hashtable['Feature1', 'Feature2']['Block', 'Audit']
预期的输出将是
2
1
5
4
,但我得到的是
$null

我确实有一个解决办法。如果我循环第一个结果,就会得到预期的结果

$Hashtable['Feature1', 'Feature2'] | % {$_['Block', 'Audit']}
2
1
5
4
我只是想知道是否有1)更好的方法来做到这一点,2)为什么我必须在那个例子中循环

我希望能够像
$hashtable[$Features][$Actions]
那样访问哈希表,其中两个变量都是一个键数组

$Hashtable['Feature1', 'Feature2'].Block
$Hashtable['Feature1'、'Feature2']
是一个数组,
array.Property
表示法是为数组的所有元素选择单个属性的缩写(需要PowerShell v3或更新版本)


编辑:上述方法仅在需要单个键时有效。如果需要多个,我想不出任何方法可以跳过对内部哈希表的迭代。一次选择多个键(例如,
$Hashtable['Feature1','Feature2']
)只能在哈希表上完成,而不能在数组上完成,并返回数组,因此它不能被链接。

在我看来,更好的方法是在值是自定义对象的情况下使用哈希。优雅的解决方案。我现在不需要看v2,但我很确定这只适用于v3+。但可能是错的。你是对的,这很有效。我恐怕我问的问题不够具体。我最初的计划是,我可以使用一个键数组访问这两个哈希表。我将相应地更新我的问题。