VM が作成されたので、それに関する詳細情報を取得できます。 リソースから情報を取得するための一般的なコマンドは show
。
az vm show --name $vmName --resource-group $resourceGroup
仮想マシンには、視覚的に解析するのが難しいプロパティが多数あります。 返される JSON には、認証、ネットワーク インターフェイス ストレージなどの情報が含まれています。 最も重要なのは、VM が接続されているリソースの Azure オブジェクト ID が含まれていることです。 オブジェクト ID を使用すると、これらのリソースに直接アクセスして、VM の構成と機能に関する詳細情報を取得できます。
オブジェクト ID を抽出するために、 --query
引数が使用されます。 クエリは JMESPath クエリ言語で記述されます。最初に、ネットワーク インターフェイス コントローラー (NIC) オブジェクト ID を取得します。
az vm show --name $vmName \
--resource-group $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
ここでは、クエリを追加するだけで、多くの問題が発生します。 各部分は、出力 JSON 内のキーを参照するか、JMESPath 演算子です。
-
networkProfile
は、サブキーとしてnetworkInterfaces
を持つ最上位の JSON のキーです。 JSON 値がディクショナリの場合、そのキーは、.
演算子を使用して親キーから参照されます。 -
networkInterfaces
値は配列であるため、[]
演算子でフラット化されます。 この演算子は、各配列要素に対してクエリの残りの部分を実行します。 この場合、すべての配列要素のid
値を取得します。
出力形式 tsv
(タブ区切り値) には、結果データと、タブと改行で構成される空白文字のみが含まれます。
戻り値は単一のベア文字列であるため、シェル変数に直接代入しても安全です。
Azure CLI 出力のクエリの詳細については、「JMESPath クエリを使用して Azure CLI コマンド出力にクエリを実行する方法」を参照してください。
次に、NIC オブジェクト ID をシェル変数に割り当てます。
nicId=$(az vm show \
-n $vmName \
-g $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
この例では、短い引数の使用も示します。
-g
ではなく--resource-group
、-n
ではなく--name
、-o
ではなく--output
を使用できます。
Azure CLI