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


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

Теперь, когда вы создали виртуальную машину, можно получить подробные сведения об этом. Обычно используется 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.