Поделиться через


Получение сведений о виртуальной машине с помощью запросов

Вы можете получить подробные сведения о созданной виртуальной машине. Используемая команда для получения сведений из ресурса — это show.

az vm show --name $vmName --resource-group $resourceGroup

Виртуальная машина имеет множество свойств, которые могут быть сложными для визуального анализа. Возвращаемые данные JSON содержат сведения об аутентификации, хранилище сетевого интерфейса и многом другом. Самое главное — они содержат идентификаторы объектов Azure для ресурсов, подключенных к виртуальной машине. Идентификаторы объектов обеспечивают непосредственный доступ к этим ресурсам для получения дополнительных сведений о конфигурации и возможностях виртуальной машины.

Для извлечения идентификатора --query объекта используется аргумент. Запросы написаны на языке запросов JMESPath. Начните с получения идентификатора объекта для сетевой карты.

az vm show --name $vmName \
  --resource-group $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  --output tsv

После добавления запроса происходит много действий. Каждая часть запроса ссылается на ключ в выходных данных JSON или является оператором JMESPath.

  • networkProfile — это ключ JSON верхнего уровня с networkInterfaces в качестве вложенного ключа. Если значение JSON является словарем, на его ключи ссылается родительский ключ с помощью оператора ..
  • Значение networkInterfaces представляет собой массив, поэтому он неструктурирован с [] помощью оператора. Этот оператор выполняет остальную часть запроса к каждому элементу массива. В этом случае он возвращает значение id каждого элемента массива.

Формат выходных данных tsv (значение с разделением знаками табуляции) гарантированно включают только данные результатов и пробелы (знаки табуляции и символы новой строки). Так как возвращаемое значение является одной строкой без доступа, она безопасно назначать непосредственно переменной оболочки.

Дополнительные сведения о запросе выходных данных Azure CLI см. в статье "Как запросить выходные данные команды Azure CLI с помощью запроса JMESPath"

Назначьте идентификатор объекта сетевого адаптера переменной оболочки.

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

В этом примере также показано использование коротких аргументов. Вы можете использовать -g вместо --resource-group, -n вместо --name и -o вместо --output.