使用 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
替换资源、资源组或订阅中的所有标记。 调用该命令时,请传入要标记的实体的资源 ID。
以下示例将一组标记应用到存储帐户:
$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 命令并传入实体的资源 ID。
若要查看资源的标记,请使用:
$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
。 传递要删除的标记的资源 ID。
$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"
后续步骤
- 并非所有资源类型都支持标记。 若要确定是否可以将标记应用到资源类型,请参阅 Azure 资源的标记支持。
- 有关标记建议和限制,请参阅使用标记来组织 Azure 资源和管理层次结构。