Azure PowerShell のクエリ出力
各 Azure PowerShell コマンドレットの結果は、Azure PowerShell オブジェクトです。 明示的に Get-
操作ではないコマンドレットでも、作成または変更されたリソースに関する情報を提供するために、検査できる値が返される場合があります。 ほとんどのコマンドレットは 1 つのオブジェクトを返しますが、一部のコマンドレットは反復処理する必要がある配列を返します。
通常は、Select-Object コマンドレットを使用して、Azure PowerShell からの出力に対してクエリを実行します。 出力は、Where-Object でフィルター処理できます。
単純なプロパティを選択する
既定のテーブル形式では、Azure PowerShell コマンドレットに使用可能なすべてのプロパティが表示されるわけではありません。
Format-List コマンドレットを使用するか、出力を Select-Object -Property *
にパイプすることで、完全なプロパティを取得できます。
Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
Select-Object -Property *
ResourceGroupName : TESTGROUP
Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TESTGROUP/providers/Micro
soft.Compute/virtualMachines/TestVM
VmId : 00000000-0000-0000-0000-000000000000
Name : TestVM
Type : Microsoft.Compute/virtualMachines
Location : westus2
LicenseType :
Tags : {}
AvailabilitySetReference :
DiagnosticsProfile :
Extensions : {}
HardwareProfile : Microsoft.Azure.Management.Compute.Models.HardwareProfile
InstanceView :
NetworkProfile : Microsoft.Azure.Management.Compute.Models.NetworkProfile
OSProfile : Microsoft.Azure.Management.Compute.Models.OSProfile
Plan :
ProvisioningState : Succeeded
StorageProfile : Microsoft.Azure.Management.Compute.Models.StorageProfile
DisplayHint : Compact
Identity :
Zones : {}
FullyQualifiedDomainName :
AdditionalCapabilities :
RequestId : 00000000-0000-0000-0000-000000000000
StatusCode : OK
関心のあるプロパティの名前がわかったら、これらのプロパティ名を Select-Object
と共に使用して、それらを直接取得できます。
Get-AzVM -Name TestVM -ResourceGroupName TestGroup |
Select-Object -Property Name, VmId, ProvisioningState
Name VmId ProvisioningState
---- ---- -----------------
TestVM 00000000-0000-0000-0000-000000000000 Succeeded
Select-Object
を使用した出力は、要求された情報を表示するように常に書式設定されます。 コマンドレットの結果のクエリの一部として書式設定を使用する方法については、「Azure PowerShell コマンドレットの出力の書式設定」を参照してください。
入れ子になったプロパティを選択する
Azure PowerShell コマンドレットの出力の一部のプロパティでは、Get-AzVM
出力の StorageProfile
プロパティなど、入れ子になったオブジェクトが使用されます。 入れ子になったプロパティから値を取得するには、表示名と、Select-Object
するディクショナリ引数の一部として検査する値への完全なパスを指定します。
Get-AzVM -ResourceGroupName TestGroup |
Select-Object -Property Name, @{label='OSType'; expression={$_.StorageProfile.OSDisk.OSType}}
Name OSType
---- ------
TestVM Linux
TestVM2 Linux
WinVM Windows
各ディクショナリ引数は、オブジェクトから 1 つのプロパティを選択します。 抽出するプロパティは、式の一部である必要があります。
結果をフィルター処理する
Where-Object
コマンドレットを使用すると、入れ子になったプロパティを含む任意のプロパティ値に基づいて結果をフィルター処理できます。 次の例では、Where-Object
を使用してリソース グループ内の Linux VM を検索する方法を示します。
Get-AzVM -ResourceGroupName TestGroup |
Where-Object {$_.StorageProfile.OSDisk.OSType -eq 'Linux'}
ResourceGroupName Name Location VmSize OsType NIC ProvisioningState Zone
----------------- ---- -------- ------ ------ --- ----------------- ----
TestGroup TestVM westus2 Standard_D2s_v3 Linux testvm299 Succeeded
TestGroup TestVM2 westus2 Standard_D2s_v3 Linux testvm2669 Succeeded
Select-Object
と Where-Object
の結果を互いにパイプ処理できます。 パフォーマンス上の理由から、Select-Object
の前に Where-Object
操作を配置することをお勧めします。
Get-AzVM -ResourceGroupName TestGroup |
Where-Object {$_.StorageProfile.OsDisk.OsType -eq 'Linux'} |
Select-Object -Property Name, VmID, ProvisioningState
Name VmId ProvisioningState
---- ---- -----------------
TestVM 00000000-0000-0000-0000-000000000000 Succeeded
TestVM2 00000000-0000-0000-0000-000000000000 Succeeded