在使用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 } }