Azure PowerShell コマンドレットの出力に対してクエリを実行する

重要

Az PowerShell モジュール で AzureRM PowerShell モジュールのすべての機能およびその他を利用できるようになったため、2024 年 2 月 29 日に AzureRM PowerShell モジュールは廃止になります。

サービスの中断を回避するために、2024 年 2 月 29 日までに、AzureRM PowerShell モジュールを使用するスクリプトを更新して、Az PowerShell モジュールを使用するようにしてください。 スクリプトを自動的に更新するには、 クイックスタート ガイドに従ってください。

PowerShell におけるクエリは、組み込みのコマンドレットを使って実行できます。 PowerShell のコマンドレット名は、 <動詞>-<名詞> の形式になっています。 Get という動詞が使われているコマンドレットがクエリのコマンドレットです。 コマンドレットの名詞の部分には、動詞の作用が及ぶ Azure リソースの種類が入ります。

単純なプロパティを選択する

Azure PowerShell では、コマンドレットごとに既定の書式が定義されています。 各リソース タイプのきわめて一般的なプロパティについては、自動的に表形式または一覧形式で表示されます。 出力の書式設定について詳しくは、「クエリの結果の書式設定」をご覧ください。

ご利用のアカウントに存在する一連の VM を照会するには、Get-AzureRmVM コマンドレットを使います。

Get-AzureRmVM

既定の出力は、自動的に表形式となります。

ResourceGroupName          Name   Location          VmSize  OsType              NIC ProvisioningState
-----------------          ----   --------          ------  ------              --- -----------------
MYWESTEURG        MyUnbuntu1610 westeurope Standard_DS1_v2   Linux myunbuntu1610980         Succeeded
MYWESTEURG          MyWin2016VM westeurope Standard_DS1_v2 Windows   mywin2016vm880         Succeeded

特定のプロパティが必要であれば、Select-Object コマンドレットを使ってそれらを選択することができます。

Get-AzureRmVM |
  Select -Property Name, ResourceGroupName, Location
Name          ResourceGroupName Location
----          ----------------- --------
MyUnbuntu1610 MYWESTEURG        westeurope
MyWin2016VM   MYWESTEURG        westeurope

入れ子になった複雑なプロパティを選択する

必要なプロパティが、JSON 出力で入れ子になっている場合は、そのプロパティへの完全パスを指定する必要があります。 Get-AzureRmVM コマンドレットの出力から VM 名と OS の種類を選択する例を次に示します。

Get-AzureRmVM |
  Select -Property Name, @{Name='OSType'; Expression={$_.StorageProfile.OSDisk.OSType}}
Name           OSType
----           ------
MyUnbuntu1610   Linux
MyWin2016VM   Windows

Where-Object コマンドレットを使って結果をフィルター処理する

Where-Object コマンドレットを使うと、プロパティの値に基づいて結果をフィルター選択することができます。 次の例では、名前に "RGD" という文字列が含まれる VM だけをフィルターで選択しています。

Get-AzureRmVM |
  Where-Object ResourceGroupName -like RGD* |
    Select-Object -Property ResourceGroupName, Name
ResourceGroupName  Name
-----------------  ----
RGDEMO001          KBDemo001VM
RGDEMO001          KBDemo020

次の例では、vmSize が 'Standard_DS1_V2' と等しい VM が結果として返されます。

Get-AzureRmVM |
  Where-Object vmSize -eq Standard_DS1_V2
ResourceGroupName          Name     Location          VmSize  OsType              NIC ProvisioningState
-----------------          ----     --------          ------  ------              --- -----------------
MYWESTEURG        MyUnbuntu1610   westeurope Standard_DS1_v2   Linux myunbuntu1610980         Succeeded
MYWESTEURG          MyWin2016VM   westeurope Standard_DS1_v2 Windows   mywin2016vm880         Succeeded