Azure PowerShell を使用してタグを適用する
この記事では、Azure PowerShell を使用してリソース、リソース グループ、サブスクリプションにタグを付ける方法について説明します。 タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。
Azure PowerShell には、タグを適用するために、New-AzTag と Update-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
を使用し、 -Operation
を Delete
に設定します。 削除するタグのリソース 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"
- すべてのリソースの種類で、タグがサポートされるわけではありません。 リソースの種類にタグを適用することができるかどうかを確認するには、Azure リソースに対するタグのサポートに関する記事を参照してください。
- タグ付け戦略の実装方法に関する推奨事項については、「リソースの名前付けとタグ付けの意思決定ガイド」を参照してください。
- タグの推奨事項と制限事項については、「タグを使用して Azure リソースと管理階層を整理する」を参照してください。