次の方法で共有


クエリによる VM 情報の取得

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を使用できます。