Azure PowerShell の出力に対してクエリを実行する
各 Azure PowerShell コマンドレットの結果は、Azure PowerShell オブジェクトです。 明示的に Get-
操作ではないコマンドレットであっても、検査可能な値を返し、作成または変更されたリソースに関する情報を提供する場合があります。 ほとんどのコマンドレットは単一オブジェクトを返す一方、反復処理される必要のある配列を返すコマンドもあります。
通常、Azure PowerShell からの出力に対してクエリを実行するには Select-Object コマンドレットを使用します。 出力は 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
の結果を互いにパイプ処理できます。 パフォーマンス上の理由から、Where-Object
操作を Select-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