powershell - 查找哪个哈希表键值

标签 powershell hashtable

<分区>

我硬编码了一个哈希表

$myHash = @{
    Americas = "US","CA","MX" #,...
    Asia = "CN","JP" #,...
    Europe = "PL","GB" #,...you get the idea

现在我将通过我设置的 foreach 循环中的输入

$country = $_.country #The 2-letter country code

现在我想知道该国家/地区代码是否映射到美洲、亚洲或欧洲(也就是哪个键保存该值)。我怎样才能找到哪个键包含 2 个字母的国家/地区代码,这样我就可以有一个变量/输出来表示 AmericasAsiaEurope (即 $myVar = ??? 打印/输出“美国”)。我不知道 powershell,所以我不知道完成此操作的具体语法

它看起来像 .containsValue() 作用于哈希表本身,而不是哈希表的键。我只有 3 个键,我只能有 3 个 if 语句

if($myHash["Americas"].containsValue()){ 
    $region = "Americas" 
    #or even better if I could get "Americas" dynamically by something like
    #$region = myHash.returnKeyThatContainsValue($country)
}
if($myHash["Asia"].containsValue()){...}
if($myHash["Europe"].containsValue()){...}

最佳答案

我的错。我不知道你想要一个衬里..这是最简单的方法(我相信需要 PowerShell 5)

$myHash.GetEnumerator().Where({$_.Value -contains "US"})
#
Name                           Value                                                                                                                                     
----                           -----                                                                                                                                     
Americas                       {US, CA, MX}

如果你只想要名字:

$myHash.GetEnumerator().Where({$_.Value -contains "US"}).Name
#
Americas

“老派”方式:

$myHash.GetEnumerator() | Where {$_.Value -contains "US"}

关于powershell - 查找哪个哈希表键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126357/

相关文章:

powershell - 将物理设备 ID 与卷设备 ID 相关联

powershell - 如何在 PowerShell 中用 %20 替换空格?

powershell - ShardManagement 二进制 ShardingKey 最大值

c# Hashtable 按键排序

java - 如何为以下内容实现哈希

c - (int, const char *) 作为 uthash 库的复合键

powershell - 获取成员(member)并在 Powershell 中浏览 .Net

c - 5000以下整数的哈希函数?

javascript - 字母表图 - 每个字母在字符串中出现的次数(包括 0)

azure - 尝试使用 PowerShell 将 Bitlocker key 备份到 Azure AD 时收到错误