概要

  • 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 コマンド ライン インターフェイス (CLI) を使用して Azure リソースを作成および管理する方法について説明します。ガイド、チュートリアル、サンプル、記事などを参照してください。
Azure Resource Manager モードで VM を管理する際に使用する一般的な Azure CLI コマンドについて説明します
Azure CLI では、--query 引数を使用して、コマンドの結果に対して JMESPath クエリを実行します。 この記事では、JMESPath の機能を使用する方法について学習します。
The ConvertFrom-Json cmdlet converts a JavaScript Object Notation (JSON) formatted string to a custom PSCustomObject object that has a property for each field in the JSON string. JSON is commonly used by web sites to provide a textual representati...

元記事はこちら

https://oji-cloud.net/2022/01/17/post-6843/
著者:新川貴章