Power Shellを使ってAzure VMの稼働ステータスやIPアドレス、ディスク情報を纏めて取得
Azure Portal上で、Virtual Machineの設定を確認しようとすると、ディスクの情報はディスクのメニューを開き、ネットワークインターフェースの情報は、ネットワークインターフェースのメニューを開きという事で少し面倒だったりします。
これをまとめて見れないかなぁという事で、Power Shellで情報取得する事に挑戦してみました。
作成にあたっては以下の各コマンド(Get-AzDisk、Get-AzNetworkInterface)ガイドをサイトを参考に進めました。
今回作成したものはGithubにも公開しております。
Azure VMに関して取得する情報
今回は指定したVMについて稼働状況、DISK情報、ネットワークインターフェースの下記情報を取得してみました。
-
- Virtual Machine名
- PowerState
- VMSize
- DISK名
- DISKサイズ
- DSIKのTier
- Network Interface名
- Private IP Address
- 静的IP or 動的IP
Azure VMの情報を取得するPower Shell
Get-AzVM でVirtual Machineの情報を取得し、その中にあるVM固有のIDを特定します。
Virtual Machineにディスクがアタッチされている場合は、このIDがディスクの情報に含まれます。そこで合致するディスクのディスク情報をGet-AzDiskで取得します。同じく ネットワークインターフェース情報はGet-AzNetworkInterfaceで取得しています。
また、Get-AzVMに-Statusオプションがないと、VMの稼働状況が取得出来ません。
一方で、-StatusオプションをつけるとVmSizeが取得出来ません。
その為、VmSizeの方は@{n="VMSize"; e={$vm.HardwareProfile.VmSize}}とし、-Status無しの結果から値を取得しています。
#VMの情報を取得するPowerShell(基本編) #VM名を指定して、IF名、IP、DISK名、サイズ、SKU等を取得
#パラメータ指定
param (
[String] [Parameter(Mandatory=$true)] $VMName
)
# VM Status 取得
$vm = Get-AzVM -name $VMName
# サブスクリプションID指定
$SubscriptionId =“サブスクリプションID"
Select-AzSubscription -SubscriptionId $SubscriptionId
# VMの各情報を取得
Get-AzVm -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status `
| select-Object Name,@{n="Status"; e={$_.Statuses[1].Code}},@{n="VMSize"; e={$vm.HardwareProfile.VmSize}}
& `
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName`
| Where { $_.ManagedBy -contains $VM.id }`
| Select-Object @{n="DiskNmae"; e={$_.Name}},DiskSizeGB,@{n="Tier"; e={$_.sku.Name}}
& `
Get-AzNetworkInterface `
| Where { $_.VirtualMachine.id -contains $VM.id}`
| Select-Object @{n="NWInterFaceNmae"; e={$_.Name}},`
@{n="PrivateIP"; e={$_.IpConfigurations.PrivateIpAddress}},`
@{n="PrivateIpAllocation"; e={$_.IpConfigurations.PrivateIpAllocationMethod}}
|
※なぜか、サブスクリプションIDの指定をしないと情報取得出来なかったので、今回は、Select-AzSubscriptionでサブスクリプションIDの指定を行っています。
Azure VMの稼働ステータスやIPアドレス、ディスクの情報の取得結果
実際にPower Shellを実行してみると、以下のような結果が得られます。(今回はディスクを2本ついたVirtual Machineなので2つ表示されます。)
PS> c:\PowerShell\VMの情報を取得する(基本編)(公開用).ps1 -VMname VM名 Name : VM名
|
※作成にあたって、躓くことがあり、マイクロソフトサポート様に大変貴重なアドバイスをいただいております。有難うございました。
Azure VMの削除と一緒にネットワークインターフェースやディスクを削除するのはこちらで試しております。