Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los comandos de la CLI de Azure se pueden ejecutar en los lenguajes de scripting bash, PowerShell y el shell de comandos de Windows (cmd). Sin embargo, hay diferencias sutiles de scripting. En este paso del tutorial, aprenderá a crear tu primera cuenta en Azure Storage y formatear valores de parámetros para los tres lenguajes de scripting.
Prerrequisitos
- Ha completado los requisitos previos para preparar el entorno.
- Usted tiene acceso a un grupo de recursos con permisos de
contributoro superiores a nivel de grupo de recursos.
Tenga en cuenta los caracteres de continuación de línea
La mayoría de la documentación de la CLI de Azure se escribe y prueba en Bash mediante Azure Cloud Shell. Una de las primeras cosas que debe recordar al copiar la sintaxis de la CLI de Azure es comprobar los caracteres de continuación de línea para el lenguaje de scripting elegido, ya que no son intercambiables.
| Lenguaje de scripting | Carácter de continuación de línea |
|---|---|
| Juerga | Barra diagonal inversa (\) |
| PowerShell | Acento grave (`) |
| Cmd | Intercalación (^) |
Sugerencia
El botón Copiar de la esquina superior derecha de los bloques de código de la CLI de Azure quita la barra diagonal inversa (\) y la tilde aguda (`) de forma predeterminada. Para copiar un bloque de código con formato, use el teclado o el mouse para seleccionar y copiar el ejemplo.
Comprender las diferencias de sintaxis al usar variables
La sintaxis para usar variables varía ligeramente entre los lenguajes de scripting. Esta es una comparación:
| Caso de uso | Juerga | PowerShell | Cmd |
|---|---|---|---|
| Creación de variables | variableName=varValue | $variableName="varValue" | set variableName=varValue |
| Uso de la variable como valor de parámetro | nombre_de_variable | $variableName | %variableName% |
Uso de la variable en el parámetro --query |
"$variableName" | "$variableName" | "$variableName" |
Hay varias maneras diferentes de mostrar información de variables en la pantalla de la consola, pero echo funciona en la mayoría de las circunstancias. Esta es una comparación:
- Bash: echo $varResourceGroup
- PowerShell: echo $varResourceGroup
- Cmd: echo %varResourceGroup%
En el paso 3, Rellenar variables para su uso en scripts, se trabaja en ejemplos detallados de sintaxis de variables.
Más información sobre las diferencias entre comillas entre lenguajes de scripting
Cada parámetro de la CLI de Azure es una cadena. Sin embargo, cada lenguaje de scripting tiene sus propias reglas para controlar comillas simples y dobles, espacios y valores de parámetro.
| Valor de cadena | CLI de Azure | PowerShell | Cmd |
|---|---|---|---|
| Mensaje de texto | 'text' o "text" | 'text' o "text" | "texto" |
| Número | \'50\' | ''50'' | '50' |
| Booleano | \'true\' | falso | verdadero |
| Fecha | '2021-11-15' | '2021-11-15' | '2021-11-15' |
| JSON | '{"key":"value"}' o "{"key":"value"}" | '{"key": "value"}' o '{"key": "value"}' o '{"key": "value"}' | {"key":"value"} |
Muchos parámetros de la CLI de Azure aceptan una lista de valores separados por espacios. Este formato afecta al proceso de citar.
- Lista sin comillas, separada por espacios: --parameterName firstValue secondValue
- Lista entrecomillada y separada por espacios: --parameterName "firstValue" "secondValue"
- Valores que contienen un espacio: --parameterName "value1a value1b" "value2a value2b" "value3"
Si no está seguro de cómo evalúa la cadena el lenguaje de scripting, devuelva el valor de una cadena a la consola o use --debug como se explica en Depurar comandos de referencia de la CLI de Azure.
Creación de una cuenta de almacenamiento para aplicar lo que ha aprendido
En el resto de este paso del tutorial se demuestran las reglas de uso de comillas en los comandos de la CLI de Azure mediante el grupo de recursos creado en Preparar su entorno para la CLI de Azure. Sustituya <msdocs-tutorial-rg-00000000> por el nombre del grupo de recursos.
Cree una cuenta de almacenamiento de Azure para usarla en este tutorial. En este ejemplo se asigna un identificador aleatorio al nombre de la cuenta de almacenamiento. Sin embargo, si desea usar un nombre diferente, consulte la información general de la cuenta de almacenamiento para conocer las reglas de nombre de la cuenta de almacenamiento.
Importante
Para poder crear una cuenta de almacenamiento, el Microsoft.Storage proveedor de recursos debe registrarse en la suscripción. Para más información sobre el registro de tipos de recursos, consulte Registro del proveedor de recursos.
En este siguiente ejemplo de script se muestra la sintaxis específica del lenguaje de scripting para lo siguiente:
- Continuación de línea
- Uso de variables
- Identificadores aleatorios
- El comando
echo
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="eastus"
resourceGroup="<msdocs-tutorial-rg-00000000>"
storageAccount="msdocssa$randomIdentifier"
# Create a storage account.
echo "Creating storage account $storageAccount in resource group $resourceGroup"
az storage account create --name $storageAccount \
--resource-group $resourceGroup \
--location $location \
--sku Standard_RAGRS \
--kind StorageV2 \
--output json
Nota:
¿Recibió un error de "Suscripción no encontrada"? Este error se produce cuando Microsoft.Storage no está registrado en la suscripción activa. Para registrar un proveedor de recursos, consulte tipos y proveedores de recursos de Azure.
La CLI de Azure muestra más de 100 líneas de JSON como salida cuando se crea una nueva cuenta de almacenamiento. La siguiente salida del diccionario JSON tiene campos omitidos por brevedad.
{
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"creationTime": "yyyy-mm-ddT19:14:26.962501+00:00",
"enableHttpsTrafficOnly": true,
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/msdocssa00000000",
"keyCreationTime": {
"key1": "yyyy-mm-ddT19:14:27.103127+00:00",
"key2": "yyyy-mm-ddT19:14:27.103127+00:00"
},
"kind": "StorageV2",
"location": "eastus",
"name": "msdocssa00000000",
"primaryEndpoints": {
"blob": "https://msdocssa00000000.blob.core.windows.net/"
},
"primaryLocation": "eastus",
"provisioningState": "Succeeded",
"resourceGroup": "msdocs-tutorial-rg-00000000",
"sku": {
"name": "Standard_RAGRS",
"tier": "Standard"
},
"statusOfPrimary": "available",
"statusOfSecondary": "available",
"tags": {},
"type": "Microsoft.Storage/storageAccounts"
}
Crear etiquetas para practicar citar diferencias
Con az storage account update, agregue etiquetas para ayudarle a identificar la cuenta de almacenamiento e informarse sobre las diferencias de cotización. Estos ejemplos de script muestran la sintaxis específica del lenguaje de scripting para lo siguiente:
- Valores que contienen espacios
- Citar espacios en blanco
- Escape de caracteres especiales
- Uso de variables
El parámetro --tags acepta una lista de valores clave:valor separados por espacios. Sustituya <msdocs-tutorial-rg-00000000> por el nombre del grupo de recursos y <msdocssa00000000> por el nombre de la cuenta de almacenamiento de Azure.
# Create new tags. This syntax works with or without quotes around each key-value pair.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags Team=t1 Environment=e1
# Create new tags containing spaces. You must use quotes.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Floor number=f1" "Cost center=cc1"
# Create a new tag with an empty value.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Department="''""
# Create a new tag containing special characters resulting in "Path": "$G:\\myPath".
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Path=\$G:\myPath"
# Create a tag from a variable.
newTag="tag1=tag value with spaces"
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "$newTag"
Si no desea sobrescribir etiquetas anteriores mientras trabaja en este paso del tutorial, use el comando az tag update y establezca el parámetro --operation en merge.
# Get the resource ID of your storage account.
saID=$(az resource show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa00000000> \
--resource-type Microsoft.Storage/storageAccounts \
--query "id" \
--output tsv)
echo My storage account ID is $saID
# Append new tags.
az tag update --resource-id $saID \
--operation merge \
--tags <tagName>=<tagValue>
# Get a list of all tags.
az tag list --resource-id $saID
Comparar más guiones específicos de lenguajes de script
Observe estas diferencias de script con más detalle. En estos ejemplos, se muestran las diferencias de comillas para lo siguiente:
- Pasar una cadena JSON como un valor de parámetro
- Filtrar resultados con el parámetro
--query- Números
- Valores booleanos
- Fechas
Ejemplo de un parámetro que contiene una cadena JSON. Este script se da para futura referencia, ya que no estamos trabajando con az rest en este tutorial.
az rest --method patch \
--url https://management.azure.com/subscriptions/<mySubscriptionID>/resourceGroups/<myResourceGroup>/providers/Microsoft.HybridCompute/machines/<machineName>?api-version=yyyy-mm-dd-preview \
--resource https://management.azure.com/ \
--headers Content-Type=application/json \
--body '{"properties": {"agentUpgrade": {"enableAutomaticUpgrade": false}}}'
Ejemplo de filtrado para un valor numérico. A menos que tenga una máquina virtual en la suscripción actual, este ejemplo se da para referencia futura.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Ejemplo de filtrado de un valor booleano mediante la cuenta de almacenamiento creada en este tutorial.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Ejemplo de filtrado de una fecha mediante la cuenta de almacenamiento creada en este tutorial.
# include time
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='2021-11-15T19:14:27.103127+00:00'].{saName:name, saID: id, sku: sku.name}"
# exclude time
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='2021-11-15'].{saName:name, saID: id, sku: sku.name}"
# subtract days and use a variable
saDate=$(date +%F -d "-30days")
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='$saDate'].{saName:name, saID: id, sku: sku.name}"
Depuración de comandos de referencia de la CLI de Azure
Usa el parámetro de depuración
La CLI de Azure ofrece un parámetro --debug que se puede usar con cualquier comando. La salida de depuración es extensa, pero proporciona información que incluye lo siguiente:
- Argumentos de comando (valores de parámetro) según la interpretación de su lenguaje de secuencias de comandos
- Ubicación del archivo de registro
- Detalles de la llamada a la API
- Errores de ejecución
Si tiene dificultades para comprender y corregir un error de ejecución al trabajar con comandos de la CLI de Azure, --debug es la respuesta para ver los pasos que está ejecutando la CLI de Azure.
Esta es una parte de la salida de depuración al crear una cuenta de almacenamiento:
cli.knack.cli: Command arguments: ['storage', 'account', 'create', '--name', 'msdocssa00000000', '--resource-group', 'msdocs-rg-test', '--location', 'eastus', '--sku', 'Standard_RAGRS', '--kind', 'StorageV2', '--output', 'json', '--debug']
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2023-01-01'
cli.azure.cli.core.sdk.policies: Request method: 'POST'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies: 'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies: 'Content-Length': '73'
cli.azure.cli.core.sdk.policies: 'Accept': 'application/json'
cli.azure.cli.core.sdk.policies: 'x-ms-client-request-id': '00000000-0000-0000-0000-000000000000'
cli.azure.cli.core.sdk.policies: 'CommandName': 'storage account create'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '--name --resource-group --location --sku --kind --output --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.61.0 (DEB) azsdk-python-core/1.28.0 Python/3.11.8 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.35)'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: {"name": "msdocssa00000000", "type": "Microsoft.Storage/storageAccounts"}
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "POST /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2023-01-01 HTTP/1.1" 200 22
cli.azure.cli.core.sdk.policies: Response status: 200
...
Para más sugerencias de solución de problemas, consulte Solución de problemas de la CLI de Azure.
Uso del comando echo
Aunque --debug indica exactamente qué interpreta la CLI de Azure, una segunda opción es devolver el valor de una expresión a la consola. Este método es útil al comprobar los resultados de --query, que se trata en detalle en Rellenar variables para su uso en scripts.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Solución de problemas
Estos son errores comunes cuando una sintaxis de comandos de referencia de la CLI de Azure no está escrita correctamente:
- "Solicitud incorrecta ...{algo} no es válido" puede deberse a un espacio, el uso de comillas simples o dobles, o a la falta de una comilla.
- "Token inesperado..." aparece cuando hay un espacio o comillas adicionales.
- El error "Valor de tipo jmespath no válido" a menudo es causado por el uso incorrecto de comillas en el parámetro
--query. - "La referencia de variable no es válida" se recibe cuando una cadena no tiene el formato correcto, a menudo debido a la concatenación o a un carácter de escape que falta.
- Los "argumentos no reconocidos" suelen deberse a un carácter de continuación de línea incorrecto.
- El error "Falta una expresión después del operador unario" se produce cuando falta un carácter de continuación de línea.
Para obtener más sugerencias de solución de problemas, consulte Solución de problemas de comandos de la CLI de Azure.
Obtenga más detalles
¿Desea obtener más detalles sobre uno de los temas tratados en este paso del tutorial? Use los vínculos de esta tabla para obtener más información.
| Asunto | Aprende más |
|---|---|
| Diferencias de guionizado | Citando diferencias entre los lenguajes de scripting |
| Reglas de comillas de Bash | |
| Reglas de comillas de PowerShell | |
| Consideraciones para ejecutar la CLI de Azure en un lenguaje de scripting de PowerShell | |
| Sugerencias para la línea de comandos de Windows | |
| Parámetros | Uso de comillas en parámetros de la CLI de Azure |
| Busque más ejemplos de sintaxis de Bash, PowerShell y Cmd en la salida del comando Query mediante JMESPath | |
| Solución de problemas | Solución de problemas de comandos de la CLI de Azure |
Paso siguiente
Ahora que ha aprendido a escribir la sintaxis de la CLI de Azure para Bash, PowerShell y Cmd, continúe con el paso siguiente para aprender a extraer valores en una variable.