使用Powershell批量爲Azure資源添加Tags


在使用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
    }
    }
相關文章
相關標籤/搜索