Azure の複数のリソースグループに分散した複数の VM をまとめて管理している場合、どのインスタンスが起動してるの?停止してるの?を確認するだけでも大変ですよね。
そこで今回、リソースグループ名を指定するだけで、指定したリソースグループに含まれる全ての VM の電源状態を自動的に一括取得して確認することができる PowerShell スクリプトをご紹介します。
VM ではなく、VMSS の電源を一括確認したいよって人は、別の記事で方法を説明しているのでそちらをご覧ください。
別記事:【Azure】リソースグループ内の全VMSSの全インスタンスの電源状態を一括確認する方法【PowerShell】
前提条件
Azure PowerShell Az モジュールのコマンドレットを利用しますので、あらかじめ Azure PowerShell Az モジュールをインストールしてください。
インストール方法は、別の記事で手順を説明しているのでそちらをご覧ください。
別記事:Azure PowerShell (Az モジュール) のインストール方法
PowerShellで指定したリソースグループに含まれる全てのVMのインスタンスの電源状態を確認する方法
PowerShellで、指定したリソースグループに含まれる全てのVMインスタンスの電源状態を確認するためのスクリプトは、下記のとおりです。
# 確認対象のリソースグループ名 $resourceGroupName = "MyResourceGroupName" # Azureに接続 Connect-AzAccount # リソースグループに含まれる全てのVM名を取得 $VmProperty = Get-AzVm -ResourceGroupName $ResourceGroupName $VmNameArray = $VmProperty.Name # VMごとに処理 foreach ($VmName in $VmNameArray){ # インスタンスビューから電源状態のステータスコードを取得 $VmInstanceView = Get-AzVm -ResourceGroupName $ResourceGroupName -Name $VmName -Status $VMDisplayStatus = $VmInstanceView.Statuses[1].DisplayStatus # VMの電源状態を判別 if ($VMDisplayStatus -eq "VM starting") { "$VmName 開始処理中" } elseif ($VMDisplayStatus -eq "VM running") { "$VmName 実行中" } elseif ($VMDisplayStatus -eq "VM stopping") { "$VmName リソースを保持したまま停止処理中" } elseif ($VMDisplayStatus -eq "VM stopped") { "$VmName リソースを保持したまま停止中" } elseif ($VMDisplayStatus -eq "VM deallocating") { "$VmName 割り当て解除処理中" } elseif ($VMDisplayStatus -eq "VM deallocated") { "$VmName 割り当て解除済み" } else { "$VmName 電源状態不明" } }
以上、ご参考ください。