PowerShellで入れ子になったプロパティから値を取得・表示する方法(Format-Custom/Format-Table/Format-List)

Azure,PowerShell/Azure CLI,Virtual Machines

Get-AzVM(Azure PowerShell)を利用して仮想マシンの情報を取得した際、入れ子になった仮想マシンサイズの表示方法が分からず悩んでいました。
いろいろ試してみたところ、PowerShellの実行結果で入れ子になったプロパティ(値)はFormat-Customで表示できることが分かりました。

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

スポンサーリンク

Format-Custom、Format-List、Format-Tableの使い方を確認

Get-AzVMコマンドを実行して表示内容を確認

Get-AzVMコマンドを実行して、表示内容を確認します。

Get-AzVM

このように、ほとんどの情報が入れ子になっているため、仮想マシンのサイズを確認できませんでした。
実行結果を見ると、仮想マシンサイズの情報はHardwareProfileプロパティに含まれていることが分かります。

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}

Format-Customを使って入れ子のプロパティ(値)を確認

Format-Customを使用して、オブジェクトの詳細など表示することができます。

Format-Custom

Get-AzVMコマンドにFormat-Customを付けて実行します。
Format-Customを利用する場合は|(パイプ)で接続します。
-Propertyオプションで表示する項目を指定することができます。
今回は、仮想マシンのサイズが含まれていそうなHardwareProfileを指定しています。
すべての情報を表示したい場合は、-Property *と指定します。

Format-Customを利用することで、入れ子になっていて確認できなかった仮想マシンサイズが、Standard_B1sであることを確認できました。

Format-Customを使用して確認

# 仮想マシンの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 *

Format-Listを使って表示したい項目をリスト形式で表示

Format-Listを利用すると、PowerShellの実行結果をリスト形式で表示することができます。
Format-Listはflと省略して利用することもできます。

Format-List

Format-Listの利用例については、こちらに記載があります。

リスト ビューのための Format-List の使用

HardwareProfileの中にVmSizeという項目があり、そこに仮想マシンサイズの値が格納されています。
このような入れ子構造の値は、$_.HardwareProfile.VmSizeと指定することで取得できます。

Format-Listを使って表示したい項目をリスト形式で表示

# 仮想マシンの情報を表示
PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-List Name,Location,{$_.HardwareProfile.VmSize}

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

しかし、このままだと仮想マシンのサイズの部分が分かりにくくなってしまいます。
表記名をVmSizeとして、見やすくしてみます。

表記名を設定して見やすくする

# 仮想マシンの情報を表示
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を利用すると、PowerShellの実行結果をテーブル形式で表示することができます。
Format-Tableはftと省略して利用することもできます。

Format-Table

Format-Tableの利用例については、こちらに記載があります。

表形式出力のための Format-Table の使用

Format-Tableを使って表示したい項目をテーブル形式で表示

# 仮想マシンの情報を表示
PS C:\> Get-AzVM -ResourceGroupName リソースグループ名 -name VM名 | Format-Table Name,Location,@{Name="VmSize"; Expression={$_.HardwareProfile.VmSize}}

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

—広告—

最後に

入れ子になった仮想マシンサイズのプロパティ(値)をFormat-Customで表示する方法や、Format-Table、Format-Listを使って実行結果を分かりやすく表示する方法について説明しました。
今回は、Get-AzVMコマンドレットで取得したAzure仮想マシン情報を例に基本的な点を確認していますが、その他にもSelect-Objectなどを使う方法もあります。

引き続き、いろいろ試してみたいと思います。

仮想マシンに関するPowerShellコマンドレットについては、こちらで紹介しています。

仮想マシンン情報を取得して活用した例については、こちらで紹介しています。

スポンサーリンク