Как игнорировать пробелы в ключе ha sh при получении значения с помощью powershell - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь получить значение ключа ha sh. Это работает нормально, когда есть точное совпадение ключа. Но, как и любое пространство, найденное в ключе, оно выдает ошибку. Работает нормально:

$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.

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Если я не понимаю ваше значение, вы хотите получить значение, например, когда ключ похож на 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(' ','')

enter image description here

Метка похожа на приведенную ниже на портале:

enter image description here

0 голосов
/ 01 мая 2020

Вот один из способов сделать это:

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...