Скрипт PowerShell для обновления тегов в Azure - powershell


0

Я пытаюсь обновить некоторые устаревшие теги ресурсов в нашей среде Azure. Мне нужно сохранить теги этих ресурсов и просто обновить один из них, но эта простая задача для сотен ресурсов становится для меня головной болью. PowerShell вообще не будет легко перезаписывать существующий тег новым значением, поэтому я создал сценарий для создания переменной для текущих тегов, исключив одно необходимое обновление, удалив все примененные теги, добавив новый тег и значение в переменная сохраненных тегов с последующим применением их ко всем ресурсам с этим неправильным значением тега. Вот мой код:

$r = (Get-AzResource -Tag @{Environment="Non-Prodd"}).Name
$tags = (Get-AzResource -Name $r).Tags | Where {$_.Key -ne Environment}
Get-AzResource -resourcename $r | Set-AzResource -Tag @{} 
$tags += @{Environment="Non-Prod"} 
Get-AzResource -resourcename $r | Set-AzResource -Tag $tags -Force

Я использую "Non-Prod" в качестве примера значения, которое необходимо обновить. Код переменной $ tags не исключает тег Environment в своем выводе, и это моя самая большая проблема. Повторное применение тегов из хранимой переменной говорит мне о том, что "Среда" все еще применяется.

Если я просто бегу:

(Get-AzResource -Name $r).Tags | Where {$_.Key -ne Environment}

Опущенный тег все еще находится в списке.

Я также открыт для любых других способов достижения моей цели.

  •  52
  •  1
  • 11 май 2020 2020-05-11 10:17:08

1 ответ

0

просто сделайте:

$tags = (Get-AzResource -Name $r).Tags
$tags.environment = value
Get-AzResource -resourcename $r | Set-AzResource -Tag $tags -Force