次の方法で共有


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-ObjectWhere-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