次の方法で共有


クエリを使用して 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 はトップレベル JSON のキーで、networkInterfaces がサブキーとして含まれます。 JSON 値がディクショナリの場合、そのキーは、. 演算子で親キーから参照されます。
  • networkInterfaces 値は配列であるため、[] 演算子でフラット化されます。 この演算子は、各配列要素でクエリの残りの部分を実行します。 ここでは、すべての配列要素の id 値を取得します。

出力形式 tsv (タブ区切り値) に含まれるのは、必ず結果データと、タブおよび改行文字で構成される空白文字だけになります。 返される値は修飾されていない 1 つの文字列であるため、シェル変数に直接割り当てても問題ありません。

Azure CLI 出力に対するクエリの詳細については、「JMESPath クエリを使用して Azure CLI コマンドの出力に対してクエリを実行する方法」を参照してください

ここで NIC オブジェクト ID をシェル変数に割り当てます。

nicId=$(az vm show \
  -n $vmName \
  -g $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  -o tsv)

この例では、短い引数の使用も示しています。 --resource-group の代わりに -g を、--name の代わりに -n を、そして --output の代わりに -o を使用できます。