我正在尝试获取哈希键的值。密钥完全匹配时,它工作正常。但是,由于在键中找到的任何空间都给出了错误。 工作正常:
$tagHash = (Get-AzResourceGroup -Name "twmstgmsnp").Tags
$datevalue = $tagHash.GetEnumerator() | ? Key -eq Date | % Value
Write-Host "Resource Group Date tag : " $datevalue.Replace(' ','')
我正在尝试忽略键中的空格:
$tagHash = (Get-AzResourceGroup -Name "twmstgmsnp").Tags
$datevalue = $tagHash.GetEnumerator() | ? Key -eq 'Date'.Replace(' ','') | % Value
Write-Host "Resource Group Date tag : " $datevalue.Replace(' ','')
错误:实际上我的$ datevalue为空,因为没有得到值。
You cannot call a method on a null-valued expression.
答案 0 :(得分:1)
如果我不误解您的意思,那么您想获取该值,例如当密钥像D a t e
时,如果是这样,则可以使用下面的命令。
$tagHash = (Get-AzResourceGroup -Name "<group-name>").Tags
$datevalue = $tagHash.GetEnumerator() | ? {($_.Key).ToString().Replace(' ','') -eq 'Date'} | % Value
Write-Host "Resource Group Date tag : " $datevalue.Replace(' ','')
该标记类似于门户中的以下内容:
答案 1 :(得分:0)
这里是一种方法:
$data = @{ "aaa" = "bbb"; "c c c" = "ddd" }
$search = "ccc"
$matches = $data.Keys | where-object { $_.Replace(" ", "") -eq $search }
# c c c
$values = $data[$matches]
# ddd
请注意,您可以获得多个匹配项,因此在这种情况下,您需要计算出想要的值-例如:
$data = @{ "aaa" = "bbb"; "c c c" = "ddd"; "ccc" = "eee" }
$search = "ccc"
$matches = $data.Keys | where-object { $_.Replace(" ", "") -eq $search }
# ccc
# c c c
$values = $data[$matches]
# eee
# ddd