使用powershell匹配密钥时获取空哈希值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用powershell匹配密钥时获取空哈希值相关的知识,希望对你有一定的参考价值。

我试图通过匹配键名来获取键的值(忽略白色和字符大小写)。

代码:

$tagHash = (Get-AzResourceGroup -Name "twmstgmsnp").Tags
Write-Host "Resource Group tags key : " $tagHash.Keys
Write-Host "Resource Group tags value : " $tagHash.Values
$ownervalue = $tagHash.GetEnumerator() | ? ($_.Key).ToString().Replace(' ','') -eq 'CreatedBy' | % Value
Write-Host "Resource Group CREATEDBY tag : " $ownervalue

结果:

资源组标签键:PURPOSE Created By

资源组标签值:QA MS Team2 env Shubham Mishra

资源组CREATEDBY标签:

enter image description here

注:如果键的文本为“ createdby”,则应始终获取值。密钥是否为“创建者”,“创建者”,“创建者”,“创建者”。它应该忽略关键的空格和大小写。

答案

如果您以纯文本格式阅读第4行和第5行的内容,那么哪里出了问题可能更有意义。

第4行:将所有这些都放入变量中:从$tagHash获取枚举数,然后获取所有键(如“ Created By”),然后获取每个匹配值。

$ownervalue = $tagHash.GetEnumerator() | ? ($_.Key).ToString().Replace(' ','') -eq 'CreatedBy' | % Value

第5行:将变量写入主机窗口。

Write-Host "Resource Group CREATEDBY tag : " $ownervalue

这就是您希望它以纯文本形式显示的内容:从$tagHash获取枚举数,然后获取所有键,例如“ Created By”,然后为每个匹配项将值写入主机窗口。

$tagHash.GetEnumerator() | Where-Object  $_.Key -like '*Created*By*' | For-Each

    Write-Host "Resource Group CREATEDBY tag : " $_.Value

另一答案

我的猜测是,通过首先替换键的所有空格,然后将其与CreatedBy进行比较,您可以最轻松地获得键的确切名称:

$ownerKey = $tags.Keys | Where-Object  ($_ -replace '\s') -eq 'CreatedBy'
Write-Host "Resource Group CREATEDBY Tag   : " $ownerKey
Write-Host "Resource Group CREATEDBY Value : " $tags[$ownerKey]

输出:

资源组CREATEDBY标记:创建者资源组CREATEDBY值:Shubham Mishra

默认情况下,-eq运算符不区分大小写。如果您需要在其他地方进行区分大小写的比较,请使用-ceq

以上是关于使用powershell匹配密钥时获取空哈希值的主要内容,如果未能解决你的问题,请参考以下文章

[powershell]Use powershell to get file hash / 使用powershell获取文件哈希值

无效的密钥哈希。密钥哈希与任何存储的密钥哈希不匹配 facebook android

使用 PowerShell 生成 Azure 存储帐户 SAS 密钥

仅当特定密钥对值与可迭代匹配时,才在 JSON 对象中获取多个 JSON 密钥对值

Google Play 应用签名 - 密钥哈希不匹配

为什么在哈希映射中使用空值或空键是有用的?