PowerShellを使ってAzure VMの稼働ステータスやIPアドレス、ディスク情報を纏めて取得
PowerShellを使って仮想マシン(Virtual Machine)の設定を纏めて取得する事に挑戦してみました。
今回は仮想マシンのステータスだけではなくローカルIPやマネージドディスクのサイズ情報なども併せて取得してみました。
Get-AzVMを使った仮想マシンの起動停止やステータス情報(電源状態)の確認についてはこちらで纏めてます。併せて見て頂けますと有難いです。
PowerShellを使って仮想マシン(Azure VM)の情報を取得
仮想マシンの情報を取得する為にはGet-AzVMを使う
仮想マシンの情報取得する為にはGet-AzVMコマンドを使います。
実際にコマンドを実行すると仮想マシンのリソースグループや場所が表示されます。
-statusオプションをつけると仮想マシンのステータス(電源状態)も確認する事が出来ます。
PS C:\> Get-AzVM ResourceGroupName Name Location VmSize OsType NIC ProvisioningState Zone PS C:\> Get-AzVM -status ResourceGroupName Name Location VmSize OsType NIC Provisioning Zone PowerState MaintenanceAllowed |
Get-AzVMコマンドで仮想マシン名を指定するとより詳細な情報を取得する事が出来ます。
PS C:\> Get-AzVM -ResourceGroupName TEST-RG-01 -name TEST-VM-01 ResourceGroupName : TEST-RG-01 |
-statusを指定すると仮想マシンのステータス情報が取得出来ます。(コマンド実行結果は抜粋です。)
PS C:\>Get-AzVM -ResourceGroupName TEST-RG-01 -name TEST-VM-01 -status
ResourceGroupName : TEST-RG-01 |
Get-AzVMを使った仮想マシンのステータス情報(電源状態)の確認についてはこちらを参照願います。
PowerShellで入れ子になったプロファイル表示する方法についてはこちらを参照願います。
仮想マシンのIP取得にはGet-AzNetworkInterfaceを使う
Get-AzVMコマンドの結果を見てもIPアドレスは確認出来ません。
NetworkProfile内を確認してもネットワークインターフェースのidのみしか確認出来ません。
PS C:\>Get-AzVM -ResourceGroupName TEST-RG-01 -name TEST-VM-01 | Format-Custom -Property NetworkProfile |
これは仮想マシンのIPはネットワークインターフェースで設定されている為になります。
ネットワークインターフェースの詳細情報を取得する為にはGet-AzNetworkInterfaceを使います。
先ほど確認したリソースIDを使用して確認してみます。(コマンド実行結果は抜粋です。)
PS C:\>Get-AzNetworkInterface -ResourceId /subscriptions/サブスクリプションID/resourceGroups/Test-RG-01/providers/Microsoft.Network/networkInterfaces/test-vm-XXXXX Name : test-vm-XXXXX |
仮想マシンのローカルIPが取得出来る事が分かりました。
マネージドディスクの情報取得にはGet-AzDiskを使う
Get-AzVMコマンドの結果を見てもディスクの詳細情報は確認出来ません。
NetworkProfile内を確認してもネットワークインターフェースのidのみしか確認出来ません。
PS C:\>Get-AzVM -ResourceGroupName TEST-RG-01 -name TEST-VM-01 | Format-Custom -Property StorageProfile Name = TEST-VM-01_OsDisk_1_XXXXXXXXXXXXXXXXX |
これは仮想マシンのディスクはマネージドディスクで設定されている為になります。
マネージドディスクの詳細情報を取得する為にはGet-AzDiskを使います。
先ほど確認したリソースIDを使用して確認してみます。(コマンド実行結果は抜粋です。)
PS C:\>Get-AzDisk -name TEST-VM-01_OsDisk_1_XXXXXXXXXXXXXXXXX ResourceGroupName : TEST-RG-01 |
仮想マシンのディスクサイズが分かりました。
PowerShellを使って仮想マシンの情報を纏めて取得
今回取得した仮想マシン情報
今回は指定したVMについて稼働状況、DISK情報、ネットワークインターフェースに関する情報を取得してみました。
-
- 取得した情報
- Virtual Machine名
- PowerState
- VMSize
- DISK名
- DISKサイズ
- DSIKのTier
- Network Interface名
- Private IP Address
- 静的IP or 動的IP
- 取得した情報
仮想マシンの情報を纏めて取得するPowerShell
最初にGet-AzVMを使って仮想マシン情報を取得しVMのリソースIDを特定します。
マネージドディスクもネットワークインターフェースの設定情報にはアタッチされている仮想マシンのリソースIDが含まれます。
仮想マシンのリソースIDとにアタッチされているリソースIDが合致するマネージドディスクやネットワークインターフェース設定情報を取得します。
Get-AzVMコマンドでは-StatusオプションでVMの稼働状況を取得しています。
但しGet-AzVMコマンド-StatusオプションをつけるとVmSizeが取得出来ません。
VmSizeの方は@{n="VMSize"; e={$vm.HardwareProfile.VmSize}}とし、-Status無しの結果から値を取得しています。
#VMの情報を取得するPowerShell(基本編) 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}}
|
※Select-AzSubscriptionは任意で利用します。サブスクリプションIDの指定をしないと情報取得出来ないケースは使います。
Azure VMの稼働ステータスやIPアドレス、ディスクの情報の取得結果
PowerShellを実行して仮想マシンの情報を取得してみます。ディスクを2本ついた仮想マシンで取得してみた結果です。(上記で実施したVMとは別のものとなります。)
PS> c:\PowerShell\VMの情報を取得する(基本編)(公開用).ps1 -VMname VM名 Name : VM名
DiskNmae : OSディスク名
DiskNmae : データDISK名
NWInterFaceNmae : ネットワークインターフェース名 |
今後も引き続き改善していきたいと思います。
Get-AzVMを使った仮想マシンの起動停止やステータス情報(電源状態)の確認についてはこちらで纏めてます。併せて見て頂けますと有難いです。
Azure VMの削除と一緒にネットワークインターフェースやディスクを削除するのはこちらで試しております。