Aplicar marcas com o Azure PowerShell

Este artigo descreve como usar o Azure PowerShell para marcar recursos, grupos de recursos e assinaturas. Para obter recomendações e limitações de marcas, confira Usar marcas para organizar sua hierarquia de recursos e gerenciamento do Azure.

Aplicar marcas

O Azure PowerShell oferece dois comandos para aplicar marcas: New-AzTag e Update-AzTag. Você precisa ter a versão 1.12.0 do módulo Az.Resources ou posterior. É possível verificar sua versão atual com Get-InstalledModule -Name Az.Resources. Pode ser instalado aquele módulo ou instalar o Azure PowerShell versão 3.6.1 ou posterior.

O New-AzTag substitui todas as marcas no recurso, no grupo de recursos ou na assinatura. Ao chamar do comando, passe a ID de recurso da entidade que deseja marcar.

O exemplo a seguir aplica um conjunto de marcas a uma conta de armazenamento:

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

Quando o comando for concluído, observe que o recurso terá duas marcas.

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

Se executar o comando novamente, mas desta vez com marcas diferentes, observe que as marcas anteriores desaparecem.

$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

Para adicionar marcas a um recurso que já tem marcas, use Update-AzTag. Defina o parâmetro de -Operation a Merge.

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

Observe que as marcas existentes crescem com a adição das duas novas marcas.

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

Cada nome de marca pode ter apenas um valor. Se você fornecer um novo valor para uma marca, ele substituirá o valor antigo mesmo que você use a operação de mesclagem. O exemplo a seguir altera a marca de Status de Normal para Verde.

$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

Quando você define o parâmetro -Operation como Replace, o novo conjunto de marcas substitui as marcas existentes.

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

Somente as novas marcas permanecem no recurso.

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

Os mesmos comandos também funcionam com grupos de recursos ou assinaturas. Passe-os no identificador do grupo de recursos ou assinatura que deseja marcar.

Para adicionar um novo conjunto de marcas a um grupo de recursos, use:

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

Para atualizar as marcas para um grupo de recursos, use:

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

Para adicionar um novo conjunto de marcas a uma assinatura, use:

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

Para atualizar as marcas de uma assinatura, use:

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

É possível ter mais de um recurso com o mesmo nome em um grupo de recursos. Nesse caso, é possível definir cada recurso com os seguintes comandos:

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

Listar marcas

Para obter as marcas de um recurso, grupo de recursos ou assinatura, use o comando Get-AzTag e passe a ID do recurso para a entidade.

Para consultar as marcas para um tipo de recurso, use:

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

Para consultar as marcas para um grupo de recursos, use:

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

Para consultar as marcas de uma assinatura, use:

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

Listar por marca

Para obter recursos que têm um nome e valor de marca específicos, use:

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

Para obter recursos que têm um nome específico e um valor de marca qualquer, use:

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

Para obter grupos recursos que têm um nome e valor de marca específicos, use:

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

Remover Marcas

Para remover marcas específicas, use Update-AzTag e defina -Operation como Delete. Passe as IDs de recurso das marcas que deseja excluir.

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

As marcas especificadas são removidas.

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

Para remover todas as marcas, use o comando Remove-AzTag.

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

Próximas etapas