Azure PowerShell を使用してタグを適用する

この記事では、Azure PowerShell を使用してリソース、リソース グループ、サブスクリプションにタグを付ける方法について説明します。 タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。

タグを適用する

Azure PowerShell には、タグを適用するために、New-AzTagUpdate-AzTag という 2 つのコマンドが用意されています。 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

コマンドが完了すると、リソースに 2 つのタグが付いていることがわかります。

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

2 つの新しいタグが追加され、既存のタグが大きくなることに注意してください。

Properties :
        Name         Value
        ===========  ==========
        Status       Normal
        Dept         Finance
        Team         Compliance
        Environment  Production

各タグ名に対して設定できる値は 1 つだけです。 タグに新しい値を指定すると、マージ操作を使用した場合でも、古い値が置き換えられます。 次の例では、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

1 つのリソース グループに同じ名前のリソースが複数存在する場合があります。 その場合は、次のコマンドを使用して各リソースを設定できます。

$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 を使用し、 -OperationDelete に設定します。 削除するタグのリソース 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"

次のステップ