Azure CLI + PowerShell 出力から特定プロパティを抽出
Contents
概要
- 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