在使用Azure的過程中,我們可以將Tags應(yīng)用于Azure資源,從而可以將元數(shù)據(jù)邏輯的組織到某些分類中。每個(gè)Tags由名稱和值組成。例如,我們可以將名稱“Environment”和值“Production”應(yīng)用于生產(chǎn)中的所有資源。
應(yīng)用Tags以后,我們可以使用該Tags名稱和值檢索訂閱中的所有資源。使用Tags可以從不同的資源組中檢索相關(guān)資源。當(dāng)我們需要組織用于計(jì)費(fèi)或管理的資源時(shí),此方法很有用。
需要注意的是當(dāng)我們使用TagsTags資源的時(shí)候是有如下限制的:
并非所有資源類型都支持Tags。
每個(gè)資源或資源組最多可以有15個(gè)Tags名稱/值對。此限制僅適用于直接應(yīng)用于資源組或資源的Tags。一個(gè)資源組可以包含許多資源,每個(gè)資源有15個(gè)Tags名稱/值對。如果您需要與資源關(guān)聯(lián)的值超過15個(gè),則使用JSON字符串作為Tags值。JSON字符串可以包含應(yīng)用于單個(gè)Tags名稱的許多值。本文展示了一個(gè)為Tags分配JSON字符串的示例。
Tags名稱限制為512個(gè)字符,Tags值限制為256個(gè)字符。對于存儲帳戶,Tags名稱限制為128個(gè)字符,Tags值限制為256個(gè)字符。
對于所有Tags名稱和值,虛擬機(jī)的總數(shù)限制為2048個(gè)字符。
應(yīng)用于資源組的Tags不會由該資源組中的資源繼承。
Tags不能應(yīng)用于云服務(wù)等傳統(tǒng)資源。
標(biāo)簽名稱不能包含這些字符:<,>,%,&,\,?,/
要將Tags應(yīng)用于資源,用戶必須具有對該資源類型的寫入權(quán)限。要將Tags應(yīng)用于所有資源類型,請使用Contributor角色。要僅將Tags應(yīng)用于一種資源類型,請使用該資源的Contributor角色。
說了這么多,下面我們就一起來看下如何使用Powershell批量為資源組下的所有資源添加Tags:
#Login to Azure Login-AzureRmAccount -Environment AzureChinaCloud #獲取資源組名稱(可單個(gè)也可所有) $Resources = Get-AzureRmResource -ResourceGroupName “ResourceGroupName” #對于每個(gè)資源,應(yīng)用資源組的標(biāo)記 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 "將下列標(biāo)簽應(yīng)用到: $($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標(biāo)簽中添加到哈希表中" $resourcetag Write-Output "------------------------------------------------" $RGTagFinal.Add($resourcetag.Key,$resourcetag.Value) } } Write-Output "---------------------------------------------" Write-Output "將下列標(biāo)簽應(yīng)用到:$($resourceid)" $RGTagFinal Write-Output "---------------------------------------------" $Settag = Set-AzureRmResource -ResourceId $resourceid -Tag $RGTagFinal -Force } }