【AzurePowershell】タグが付与されたリソース一覧を出力してみた

AzurePowershell AzurePowershell
この記事は約4分で読めます。

AzurePowershellを利用して特定のタグが付与されたリソース名を取得してみました。

構成管理リソース一覧を定期的に取得する際に利用できるかと思います。

広告

1.事前準備

1-1.AzurePowershellのインストール

PAzurePowershellを実行しますのでAzurePowershellモジュールが必要になります。

以下の記事にインストール方法を記載していますので必要であれば参考にしてください。

AzurePowerShellをインストールしてみた
AzurePowershellモジュールをインストールしてみました。事前準備PowerShell スクリプトの実行ポリシーの確認現在のユーザでpowershellスクリプトが実行できるように実行ポリシーが、「RemoteSigned」「Un...

1-2.サービスプリンシパルの作成

Azureのリソースを操作するために今回はサービスプリンシパルを利用します。

以下の記事にサービスプリンシパルの作成方法を記載していますので必要であれば参考にしてください。

【Azure】CLIでサービスプリンシパルを作成してみた
AzurePowershellとAzureCLIを利用してサービスプリンシパルを作成してみました。AzurePowershellで作成した場合にはレスポンスの中にしかシークレット情報はないのかについても検証してみました。

1-3.Powershellスクリプトファイルの作成

以下の内容でpowershellファイル(拡張子が ps1 となるファイル)を作成します。

# 出力先のファイルパスを定義する
$Path = "C:\hogehoge\tag_result.json"

# 各情報が記載されたファイルから中身を読み取る
$ApplicationId = Get-Content C:\hogehoge\ApplicationId.txt
$Secret = Get-Content C:\hogehoge\Secret.txt
$tenantId = Get-Content C:\hogehoge\tenantId.txt

# クレデンシャルを作成する
$pw = ConvertTo-SecureString -String $Secret -AsPlainText -Force
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $pw

# ログインする
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

# 特定のファイルに指定したタグのリソース名を取得してファイルに書き込む
(Get-AzResource -Tag @{ TAG="test" }).name | ConvertTo-Json | Out-File $Path -Encoding utf8 -Append

このスクリプトを実行することで、

指定したファイルにタグ名が[TAG]の中でタグの値が[test]であるリソース名を追記する

という処理を実行することができます。

1-4.スクリプト内で利用するファイルを配置

「ApplicationId.txt」「Secret.txt」「tenantId.txt」を用意します。

また今回は「get-tag.ps1」を「start.bat」というファイルを用意してバッチファイルで実行しています。

以下の記事にPowershellファイルをバッチで起動する方法を記載していますので必要であれば参考にしてください。

【Powershell】バッチファイルでpowershellを実行する方法
powershlell で作成したスクリプトをバッチファイルで起動する方法をまとめました。「powershellを実行させるときにクリック操作で実行できたら楽だな」と思ったのがきっかけで、バッチファイルと組み合わせることで実現ができそうであ...

2.Powershellスクリプトを実行する

準備が完了したらバッチファイルを実行します。

準備完了時のフォルダ構成

バッチファイルが実行されるとコマンドプロンプトが起動し、ps1ファイルのスクリプトも実行されていきます。

実行結果

実行が終わると、以下のように「tag_result.json」というファイルが作成され、「タグ名が[TAG]の中でタグの値が[test]であるリソース名」が記載されます。

今回はタグの値が TAG:test となっているリソースが2つあることが確認できました。

実行後のjsonファイルの中身

[参考] 手動で実行も可能

バッチファイルを実行するのでなく、Powershellのインターフェース上から上記のスクリプトを手動実行することも可能です。

ただし、その場合にはpowrshellの実行ポリシーには注意してください。

[参考] Tagで取得できる情報について

Azureのリソースにおいて、タグが設定されている場合に取得できる情報には
「Name」「ResourceGroup」「ResourceType」「Location」「ResourceId」
があります。

この中から今回は「Name」を取り出して出力しています。

「Name」を取り出した結果
タイトルとURLをコピーしました