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

Я пытаюсь получить значение ключа, сопоставляя имя ключа (игнорируя регистр символов белого цвета).

Код:

$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

Примечание: он всегда должен извлекать значение, если ключ должен иметь текст «createby». Является ли ключ «Создан», «Создан», «СОЗДАН», «СОЗДАН». Следует игнорировать ключевые пробелы и регистр.

Ответы [ 2 ]

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

Я предполагаю, что вы можете получить точное имя ключа проще всего, заменив сначала все пробелы из него, а затем сравните его с CreatedBy.
Нет необходимости в методе GetEnumerator(), просто получите имя ключа из массива .Keys:

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

Вывод:

Resource Group CREATEDBY Tag   :  Created By
Resource Group CREATEDBY Value :  Shubham Mishra

По умолчанию оператор -eq работает без учета регистра. Если вам нужно сравнение с учетом регистра в другом месте, используйте -ceq

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

Если вы читаете, что ваши 4-я и 5-я строки делают в виде обычного текста, может иметь смысл, когда что-то пошло не так.

Строка 4:
Поместите все это в переменную: Получить перечислитель из $tagHash, а затем получить все ключи, такие как «Создано», а затем для каждого соответствия Значение.

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

Строка 5:
Записать переменную в окно хоста.

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

Это то, что вы хотите сказать простым текстом:
Получить перечислитель из $tagHash, затем получить все ключи, такие как «Создано», а затем для каждого совпадения записать значение в окно хоста.

$tagHash.GetEnumerator() | Where-Object { $_.Key -like '*Created*By*'} | For-Each
{
    Write-Host "Resource Group CREATEDBY tag : " $_.Value
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...