Powershell 如何从值中检索哈希表键?
我有一个PowerShell哈希表,其中包含一组键值对(自然)。所有哈希表值都是唯一的Powershell 如何从值中检索哈希表键?,powershell,Powershell,我有一个PowerShell哈希表,其中包含一组键值对(自然)。所有哈希表值都是唯一的 我想使用PowerShell根据我指定的值检索哈希表键。您可以使用PowerShell 4.0的Where方法语法来实现这一点。Where方法接受PowerShellScriptBlock,以查找与指定条件匹配的对象。我们可以迭代哈希表键并找到包含所需值的键 如果您确实有一个具有重复哈希表值的场景,您可以选择指定第二个参数,类型为WhereOperatorSelectionMode,该参数指定调用where方
我想使用PowerShell根据我指定的值检索哈希表键。您可以使用PowerShell 4.0的Where方法语法来实现这一点。Where方法接受PowerShell
ScriptBlock
,以查找与指定条件匹配的对象。我们可以迭代哈希表键并找到包含所需值的键
如果您确实有一个具有重复哈希表值的场景,您可以选择指定第二个参数,类型为WhereOperatorSelectionMode
,该参数指定调用where方法应返回哪些对象。通过为第二个方法参数指定First
,我们可以确保只返回一个哈希表键
第二个参数的所有支持值如下所示:
- 违约
- 首先
- 最后
- 技巧
- 直到
- 分裂
其他选择:
- 迭代哈希表键并查找包含
值:
$HashTable.Keys |?{$HashTable[$\]-eq$Val}
- 要使用
函数进行迭代:GetEnumerator()
$HashTable.GetEnumerator()|?{$\.Value-eq$Val}{$\.Key}
$HashTable = @{
1 = 10;
2 = 20;
3 = 30;
}
$Val = 30;
$HashTable.Keys.Where({ $HashTable[$PSItem] -eq $Val; }, [System.Management.Automation.WhereOperatorSelectionMode]::First);