Применение тегов с помощью Azure PowerShell

В этой статье описывается использование Azure PowerShell для добавления тегов к ресурсам, группам ресурсов и подпискам. Рекомендации и ограничения тегов см. в статье Использование тегов для упорядочения ресурсов Azure и иерархии управления.

Применить теги

Azure PowerShell предлагает две команды для применения тегов: New-AzTag и Update-AzTag. Требуется модуль Az.Resources версии 1.12.0 или выше. Проверить версию можно с помощью Get-InstalledModule -Name Az.Resources. Можно установить этот модуль или установить Azure PowerShell версии 3.6.1 или выше.

Команда New-AzTag заменяет все теги в ресурсе, группе ресурсов или подписке. При вызове команды укажите идентификатор ресурса той сущности, которой нужно присвоить тег.

В следующем примере набор тегов присваивается учетной записи хранения.

$tags = @{"Dept"="Finance"; "Status"="Normal"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
New-AzTag -ResourceId $resource.id -Tag $tags

Обратите внимание на то, что после выполнения команды ресурс имеет два тега.

Properties :
        Name    Value
        ======  =======
        Dept    Finance
        Status  Normal

Если выполнить команду еще раз, но с другими тегами, предыдущие теги исчезнут.

$tags = @{"Team"="Compliance"; "Environment"="Production"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
New-AzTag -ResourceId $resource.id -Tag $tags
Properties :
        Name         Value
        ===========  ==========
        Environment  Production
        Team         Compliance

Для добавления тегов к ресурсу, уже имеющему теги, следует использовать Update-AzTag. Установите для параметра -Operation значение Merge.

$tags = @{"Dept"="Finance"; "Status"="Normal"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
Update-AzTag -ResourceId $resource.id -Tag $tags -Operation Merge

Обратите внимание, что существующие теги увеличиваются с добавлением двух новых тегов.

Properties :
        Name         Value
        ===========  ==========
        Status       Normal
        Dept         Finance
        Team         Compliance
        Environment  Production

Каждое имя тега может иметь только одно значение. Если указать новое значение для тега, оно заменит старое, даже если использовать операцию слияния. В следующем примере тег Status изменяется с Normal на Green.

$tags = @{"Status"="Green"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
Update-AzTag -ResourceId $resource.id -Tag $tags -Operation Merge
Properties :
        Name         Value
        ===========  ==========
        Status       Green
        Dept         Finance
        Team         Compliance
        Environment  Production

Если для параметра -Operation задается значение Replace, существующие теги заменяются новым набором тегов.

$tags = @{"Project"="ECommerce"; "CostCenter"="00123"; "Team"="Web"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
Update-AzTag -ResourceId $resource.id -Tag $tags -Operation Replace

В ресурсе остаются только новые теги.

Properties :
        Name        Value
        ==========  =========
        CostCenter  00123
        Team        Web
        Project     ECommerce

Эти же команды также работают с группами ресурсов и подписками. Укажите их в идентификаторе группы ресурсов или подписки, которые нужно отметить тегом.

Чтобы добавить новый набор тегов в группу ресурсов, используйте:

$tags = @{"Dept"="Finance"; "Status"="Normal"}
$resourceGroup = Get-AzResourceGroup -Name demoGroup
New-AzTag -ResourceId $resourceGroup.ResourceId -tag $tags

Чтобы обновить теги для группы ресурсов, используйте:

$tags = @{"CostCenter"="00123"; "Environment"="Production"}
$resourceGroup = Get-AzResourceGroup -Name demoGroup
Update-AzTag -ResourceId $resourceGroup.ResourceId -Tag $tags -Operation Merge

Чтобы добавить новый набор тегов к подписке, используйте:

$tags = @{"CostCenter"="00123"; "Environment"="Dev"}
$subscription = (Get-AzSubscription -SubscriptionName "Example Subscription").Id
New-AzTag -ResourceId "/subscriptions/$subscription" -Tag $tags

Чтобы обновить теги для подписки, используйте:

$tags = @{"Team"="Web Apps"}
$subscription = (Get-AzSubscription -SubscriptionName "Example Subscription").Id
Update-AzTag -ResourceId "/subscriptions/$subscription" -Tag $tags -Operation Merge

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

$resource = Get-AzResource -ResourceName sqlDatabase1 -ResourceGroupName examplegroup
$resource | ForEach-Object { Update-AzTag -Tag @{ "Dept"="IT"; "Environment"="Test" } -ResourceId $_.ResourceId -Operation Merge }

Вывод списка тегов

Чтобы получить теги для ресурса, группы ресурсов или подписки, используйте команду Get-AzTag и укажите идентификатор ресурса для сущности.

Чтобы просмотреть теги ресурса, используйте:

$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
Get-AzTag -ResourceId $resource.id

Чтобы просмотреть теги группы ресурсов, используйте:

$resourceGroup = Get-AzResourceGroup -Name demoGroup
Get-AzTag -ResourceId $resourceGroup.ResourceId

Чтобы просмотреть теги подписки, используйте:

$subscription = (Get-AzSubscription -SubscriptionName "Example Subscription").Id
Get-AzTag -ResourceId "/subscriptions/$subscription"

Список по тегу

Чтобы получить ресурсы с определенным именем и значением тега, используйте:

(Get-AzResource -Tag @{ "CostCenter"="00123"}).Name

Чтобы получить ресурсы с определенным именем и любым значением тега, используйте:

(Get-AzResource -TagName "Dept").Name

Чтобы получить группу ресурсов с определенным именем и значением тега, используйте:

(Get-AzResourceGroup -Tag @{ "CostCenter"="00123" }).ResourceGroupName

Удалить теги

Чтобы удалить конкретные теги, используйте Update-AzTag и задайте -Operation для значение Delete. Передайте идентификаторы ресурсов тегов, которые требуется удалить.

$removeTags = @{"Project"="ECommerce"; "Team"="Web"}
$resource = Get-AzResource -Name demostorage -ResourceGroup demoGroup
Update-AzTag -ResourceId $resource.id -Tag $removeTags -Operation Delete

Указанные теги удаляются.

Properties :
        Name        Value
        ==========  =====
        CostCenter  00123

Чтобы удалить все теги, используйте команду Remove-AzTag.

$subscription = (Get-AzSubscription -SubscriptionName "Example Subscription").Id
Remove-AzTag -ResourceId "/subscriptions/$subscription"

Дальнейшие действия