はじめに
Azureでバックアップが成功しているか否かを確認するにはAzureポータルから確認するしかなかったので、バックアップの成功状況を自動取得するpowershellコマンドレットと事前準備手順をまとめます。
EntraIDアプリの準備
タスクで自動実行させたいので、APIでの取得を前提とします。
EntraIDアプリの作成
※スクリーンショットはMS365のEntraIDとなります。Azureポータルとは異なりますが、基本的に手順は一緒です。
アプリの登録でアプリケーションを作成します。サポートされているアカウントの種類はデフォルト「この組織ディレクトリのみに含まれるアカウント」で問題ございません。それ以外は特に設定せず作成は完了です。

作成したアプリケーションを開き、「クライアントシークレット」を作成します。登録時のみ値が表示され、接続時に利用するため忘れずにどこかに保管してください。

サブスクリプションで閲覧者ロール付与
契約しているサブスクリプションを開きます。アクセス制御(IAM)>ロールの割り当ての追加を実行します。情報を閲覧したいだけのため、今回はサブスクリプションに対して「閲覧者」ロールを付与します。
メンバータブの「メンバーを選択する」を選択すると、検索画面がでますので、アプリケーション名を入力しますと該当アプリケーションが表示されます。選択したら「レビューと割り当て」を準備完了。
PowerShellの事前準備
Azモジュールが必要となりますので、実行環境にインストールします。PowerShellは管理者権限で実行してください。
#ポリシーを変更
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
#AzurePowerShellをインストール
Install-Module -Name Az -Repository PSGallery -Force
これですべての事前準備は完了です。
バックアップコンテナからバックアップ実行結果をCSVで取得
以下のコマンドレットで必要なところを修正すれば取得できるはずです。
#作成したアプリケーションID
$user = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
#クライアントシークレットの値、スクリプトに直接書き込むのが嫌な場合はパスワードファイルを
#準備することをお勧めします。
$password = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
#テナントID
$tenantId = "cccccccc-cccc-cccc-cccc-cccccccccccc"
#パスワードをセキュアな文字列に変換
$SecureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force
#接続情報作成
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$SecureStringPwd
#Azureに接続
Connect-AzAccount -ServicePrincipa -Credential $pscredential -Tenant $tenantId
#保管場所リソース情報の取得
$resouceGroupName = "yourResouceGroupName"
$vaultName = "yourRecoveryContainerName"
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resouceGroupName -Name $vaultName
#バックアップされた各VM情報を取得
$containers = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -VaultId $vault.ID
#バックアップアイテムを配列に格納
$backupitems =@()
foreach($container in $containers){
$items = Get-AzRecoveryServicesBackupItem -Container $container -WorkloadType "AzureVM" -VaultId $vault.ID
$backupitems += $items
}
#バックアップ結果をCSVで一覧出力
$backupitems | ForEach-Object{
$vmName = $_.ContainerName
$lastBackupStatus = $_.LastBackupStatus
$lastBackupTimeUTC = $_.LatestRecoveryPoint
$lastBackupTimeJST = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($lastBackupTimeUTC,"UTC","Tokyo Standard Time")
[PSCustomObject]@{
VmName = $vmName.Split(";")[2]
LastBackupStatus = $lastBackupStatus
LastBackupUTC = $lastBackupTimeUTC
LastBackupJST = $lastBackupTimeJST
}
}|Export-Csv -Path "yourDirectory" -NoTypeInformation
Disconnect-AzAccount
まとめ
以上で、『AzureバックアップコンテナからVM毎のバックアップ実行結果を取得する手順』でした。タスクスケジューラを仕込んでおけば、わざわざポータルを見に行かなくても容易に情報を取得することができます。