PowerShellで入れ子になったプロパティ(値)をFormat-Custom使って表示

Get-AzVM(Azure PowerShell)を利用してVMの情報を取得してみたのですが入れ子になった仮想マシンサイズ表示する方法が分からずに悩んでいました。その時に色々な方にお聞きしてPowerShell実行結果で入れ子になったプロパティ(値)はFormat-Customで表示出来る事を教えて頂きました。

Get-AzVMコマンド(Azure PowerShell)を例に入れ子になった仮想マシンサイズのプロパティ(値)をFormat-Customで表示、Format-TableやFormat-Listを使って実行結果を分かりやすく表示する所までを簡単に纏めてみました。

スポンサーリンク

Get-AzVMコマンドを実行してみる

Get-AzVMコマンドを実行してみます。Get-AzVMコマンドの詳細はこちらを参照ください。

Get-AzVMコマンドを実行してみる

//VMの情報を表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 

ResourceGroupName : リソースグループ名
Id : /subscriptions/サブスクリプションID/resourceGroups/リソースグループ名/providers/Microsoft.Compute/virtualMachines/VM名
VmId : VM ID
Name : VM名
Type : Microsoft.Compute/virtualMachines
Location : eastus2
Tags : {}
Extensions : {DependencyAgentLinux, OMSAgentForLinux}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}

このように、ほとんどの情報が入れ子になっており、仮想マシンのサイズも分かりませんでした。

結果を見ると仮想マシンサイズの情報はHardwareProfileに入っていそうです。

PowerShellで入れ子のプロパティ(値)を確認するのにはFormat-Customを使う

Get-AzVMコマンドにFormat-Customをつけて実行してみます。Format-Custom利用時は|(パイプ)で接続します。

-Propertyで表示する項目を指定する事が出来ます。仮想マシンのサイズが含まれそうなHardwareProfileを指定してみます。すべての情報を表示する場合は-Property *と指定します。

Format-Customの詳細はこちらを参照ください。

Get-AzVMにFormat-Customをつける

//VMのHardwareProfileを表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-Custom -Property HardwareProfile

class PSVirtualMachine
 {
  HardwareProfile =
   class HardwareProfile
   {
    VmSize = Standard_B1s
   }
 }

//Get-AzVMで取得されるすべての値を表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-Custom -Property *

入れ子になっていて分からなかった仮想マシンサイズがStandard_B1sである事を確認出来ました。

Format-ListやFormat-Tableを使ってGet-AzVMのコマンド実行結果を見やすくしてみた

Get-AzVMコマンド実行結果の中で必要な項目をリスト形式で表示する事で見やすくしてみました。例としてVM名、VMのロケーション、仮想マシンサイズを表示してみます。

HardwareProfileの中にVmSizeという項目があり、そこに仮想マシンサイズの値が格納されている事が分かりました。このような入れ子の中の値は{$_.HardwareProfile.VmSize}と指定する事で取得する事が出来ます。

Format-Listを使ってみる

Format-List(flと省略する事が可能)を利用するとPowerShellの実行結果をリスト形式で表示する事が出来ます。

Format-Listの詳細はこちらを参照ください。コマンドリファレンスはこちら

Get-AzVMで表示したい項目だけをリスト形式で表示

//VMの情報を表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-List Name,Location,{$_.HardwareProfile.VmSize}

Name : VM名
Location : eastus2
$_.HardwareProfile.VmSize : Standard_B1s

しかしこれだとVMサイズの部分が見にくいです。表記名をVmSizeとして見やすくしてみます。

Get-AzVMの結果をさらに見やすくする

//VMの情報を表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-List Name,Location,@{Name="VmSize"; Expression={$_.HardwareProfile.VmSize}}

Name : VM名
Location : eastus2
VmSize : Standard_B1s

このような形で見やすい形で表示する事が出来ました。

Format-Tableを使ってみる

Format-Table(ftと省略する事が可能)を利用する事で表形式にすることも可能です。

Format-Tableの詳細はこちらを参照ください。コマンドリファレンスはこちら

Get-AzVMの結果を表形式にしてみる

//VMの情報を表示

PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-Table Name,Location,@{Name="VmSize"; Expression={$_.HardwareProfile.VmSize}}

Name Location VmSize
—- ——– ——
VM名 eastus2 Standard_B1s

今回の内容を踏まえてAzure VMの稼働ステータスなども纏めて取得はこちらでやっています。