Share via


Obtención de información de la máquina virtual con consultas

Ahora que se ha creado una máquina virtual, se puede recuperar información detallada al respecto. El comando común para obtener información de un recurso es show.

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

Una máquina virtual tiene muchas propiedades que pueden ser difíciles de analizar visualmente. El código JSON devuelto contiene información sobre la autenticación, el almacenamiento de la interfaz de red, etc. Lo más importante, contiene los identificadores de objeto de Azure de los recursos a los que está conectada la máquina virtual. Los identificadores de objeto permiten acceder a estos recursos directamente para más información acerca de la configuración y las funcionalidades de la máquina virtual.

Para extraer el identificador de objeto, se usa el argumento --query. Las consultas se escriben en el lenguaje de consulta JMESPathPara empezar, obtenga el identificador del objeto controlador de interfaz de red (NIC).

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

Hay muchas cosas en este caso al agregar la consulta. Cada parte hace referencia a una clave en la salida JSON o es un operador JMESPath.

  • networkProfile es una clave del código JSON de nivel superior, que tiene networkInterfaces como subclave. Si un valor JSON es un diccionario, se hace referencia a sus claves desde la clave primaria con el operador ..
  • El valor networkInterfaces es una matriz, por lo que se aplana con el operador []. Este operador ejecuta el resto de la consulta en cada elemento de la matriz. En este caso, obtiene el valor id de cada elemento de la matriz.

En el formato de salida tsv (valores separados por tabulaciones) se garantiza que solo se incluyen los datos de resultados y el espacio en blanco que consta de tabulaciones y líneas nuevas. Como el valor devuelto es una sola cadena vacía, resulta seguro asignarlo directamente a una variable de entorno.

Para más información sobre cómo consultar la salida de la CLI de Azure, consulte Cómo consultar la salida de comandos de la CLI de Azure mediante una consulta de JMESPath

Continúe y asigne a continuación el identificador de objeto del NIC a una variable de shell.

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

En este ejemplo también se muestra el uso de argumentos cortos. Puede usar -g en lugar de --resource-group, -n en lugar de --name y -o en lugar de --output.