在使用Azure的过程当中,咱们能够将Tags应用于Azure资源,从而能够将元数据逻辑的组织到某些分类中。每一个Tags由名称和值组成。例如,咱们能够将名称“Environment”和值“Production”应用于生产中的全部资源。shell
应用Tags之后,咱们可使用该Tags名称和值检索订阅中的全部资源。使用Tags能够从不一样的资源组中检索相关资源。当咱们须要组织用于计费或管理的资源时,此方法颇有用。ide
须要注意的是当咱们使用TagsTags资源的时候是有以下限制的:继承
并不是全部资源类型都支持Tags。资源
每一个资源或资源组最多能够有15个Tags名称/值对。此限制仅适用于直接应用于资源组或资源的Tags。一个资源组能够包含许多资源,每一个资源有15个Tags名称/值对。若是您须要与资源关联的值超过15个,则使用JSON字符串做为Tags值。JSON字符串能够包含应用于单个Tags名称的许多值。本文展现了一个为Tags分配JSON字符串的示例。字符串
Tags名称限制为512个字符,Tags值限制为256个字符。对于存储账户,Tags名称限制为128个字符,Tags值限制为256个字符。虚拟机
对于全部Tags名称和值,虚拟机的总数限制为2048个字符。it
应用于资源组的Tags不会由该资源组中的资源继承。io
Tags不能应用于云服务等传统资源。class
标签名称不能包含这些字符:<,>,%,&,\,?,/权限
要将Tags应用于资源,用户必须具备对该资源类型的写入权限。要将Tags应用于全部资源类型,请使用Contributor角色。要仅将Tags应用于一种资源类型,请使用该资源的Contributor角色。
说了这么多,下面咱们就一块儿来看下如何使用Powershell批量为资源组下的全部资源添加Tags:
#Login to Azure Login-AzureRmAccount -Environment AzureChinaCloud #获取资源组名称(可单个也可全部) $Resources = Get-AzureRmResource -ResourceGroupName “ResourceGroupName” #对于每一个资源,应用资源组的标记 Foreach ($resource in $Resources) { $Rgname = $resource.Resourcegroupname $resourceid = $resource.resourceId $RGTags = (Get-AzureRmResourceGroup -Name $Rgname).Tags $resourcetags = $resource.Tags If ($resourcetags -eq $null) { Write-Output "---------------------------------------------" Write-Output "将下列标签应用到: $($resourceid)" $RGTags Write-Output "---------------------------------------------" $Settag = Set-AzureRmResource -ResourceId $resourceid -Tag $RGTagS -Force } Else { $RGTagFinal = @{} $RGTagFinal = $RGTags Foreach ($resourcetag in $resourcetags.GetEnumerator()) { If ($RGTags.Keys -inotcontains $resourcetag.Key) { Write-Output "------------------------------------------------" Write-Output "键不存在于RG标签中添加到哈希表中" $resourcetag Write-Output "------------------------------------------------" $RGTagFinal.Add($resourcetag.Key,$resourcetag.Value) } } Write-Output "---------------------------------------------" Write-Output "将下列标签应用到:$($resourceid)" $RGTagFinal Write-Output "---------------------------------------------" $Settag = Set-AzureRmResource -ResourceId $resourceid -Tag $RGTagFinal -Force } }