Azure CLI + PowerShell 出力から特定プロパティを抽出

Azure

概要

  • PowerShell を利用したAzure CLI において、出力結果から特定プロパティを抽出する方法を記載します。

 

Azure CLI + PowerShell テクニック1

出力結果をクエリする

  • Azure CLI では、–query 引数を使用して、コマンドの結果に対して JMESPath クエリを実行します。 JMESPath は、CLI の出力からデータを選択して変更できるようにするJSON 用のクエリ言語です。
  • JMESPath は、[?…] および比較演算子(<、<=、>、>=、==、!=)と論理演算子(AND (&&)、OR (||)、NOT (!))を利用して、フィルターができます。
  • 以下コマンドサンプルでは、az vm listコマンドの結果からVM の名前をフィルターします。
PS C:\Users\niikawa> az vm list --query "[?name=='niikawa-test'].name"
[
  "niikawa-test"
]
  • ※JMESPath では、文字列は常に単一引用符 (') で囲みます。
  • Azure CLI のクエリについては、こちらのドキュメントに詳細が記載されています。

 

 

Azure CLI + PowerShell テクニック2

出力結果を JSONからカスタムオブジェクトに変換

  • ConvertFrom-Json コマンドを利用して、JSON形式の文字列を、各フィールドのプロパティを持つカスタムPSCustomObjectオブジェクトに変換します。
PS C:\Users\niikawa> az vm list --query "[?name=='niikawa-test']" | Convertfrom-Json

 

出力結果を から特定プロパティを抽出

  • PowerShell の出力結果において、特定のプロパティを抜き出します。
  • 以下コマンドサンプルでは、az vm listコマンドの結果からVM の名前とサイズのプロパティを抜き出しています。複数のプロパティがある場合は、カンマで区切ります。
PS C:\Users\niikawa> (az vm list --query "[?name=='niikawa-test']" | Convertfrom-Json) | % {$_.name,$_.hardwareProfile.vmSize}
niikawa-test
Standard_B1s

 

関連資料

Azure

Posted by takaaki