如何在Powershell中从数组创建KeyCollection?

时间:2014-08-08 14:40:29

标签: powershell

我们说我有这样的哈希:

   $NATO = @{
        "A" = "Alpha";
        "B" = "Bravo";
        "C" = "Charlie";
        # ...
        "Y" = "Yankee";
        "Z" = "Zulu";
    }

我可以使用$NATO.keys密钥集合获取所有哈希值:

    $NATO[$NATO.keys] # gives me all values

但是,如果我想传递密钥子集,以获取值的子集,我就不能这样做:

    $NATO["BUNYK".ToCharArray()] # gives me nothing, but I want 
    # Bravo, Uniform, November, Yankee, Kilo

你知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

您还可以将字符串数组传递到ForEach-Object循环:

 [string[]]'BUNYK'.ToCharArray() | % { $NATO[$_] }

答案 1 :(得分:1)

哈希表将键存储为对象,不一定是简单的字符串。示例中的键是字符串,但您尝试将它们作为[char]对象进行访问。处理示例的最简单方法是将[char []]数组转换为[string []]数组:

$NATO[([string[]] "BUNYK".ToCharArray())]