Découvrir les différences de la syntaxe Azure CLI dans Bash, PowerShell et Cmd
Les commandes Azure CLI peuvent être exécutées dans les langages de script Bash, PowerShell et Windows Command Shell (Cmd ). Toutefois, il existe des différences subtiles de script. Dans cette étape du tutoriel, découvrez comment créer vos premières valeurs de paramètres de compte et de format Stockage Azure pour les trois langages de script.
Prérequis
- Vous avez rempli les prérequis pour préparer votre environnement.
- Vous avez accès à un groupe de ressources avec des autorisations
contributor
ou supérieures au niveau d’un groupe de ressources.
Faire attention aux caractères de continuation de ligne
La plupart de la documentation Azure CLI est écrite et testée dans Bash avec Azure Cloud Shell. L’une des premières choses à mémoriser lors de la copie de la syntaxe Azure CLI consiste à vérifier les caractères de continuation de ligne pour votre langage de script choisi, car ils ne sont pas interchangeables.
langage de script | Caractère de continuation de ligne |
---|---|
Bash | Barre oblique inverse (\ ) |
PowerShell | Guillemet inverse (` ) |
Cmd | Caret (^ ) |
Conseil
Le bouton Copier en haut à droite des blocs de code Azure CLI supprime la barre oblique inverse (\
) et le guillemet inverse (`
) par conception. Si vous voulez copier un bloc de code mis en forme, utilisez votre clavier ou votre souris pour sélectionner et copier l’exemple.
Comprendre les différences de syntaxe en cas d’utilisation de variables
La syntaxe de l’utilisation de variables varie légèrement entre les langages de script. Voici une comparaison :
Cas d’usage | Bash | PowerShell | Cmd |
---|---|---|---|
Créer une variable | variableName=varValue | $variableName="varValue" | set variableName=varValue |
Utiliser une variable comme valeur de paramètre | variableName | $variableName | %variableName% |
Utiliser une variable dans un paramètre --query |
'$variableName' | '$variableName' | '$variableName' |
Il existe plusieurs façons de renvoyer des informations de variable sur l’écran de votre console, mais echo
fonctionne dans la plupart des cas. Voici une comparaison :
- Bash : echo $varResourceGroup
- PowerShell : echo $varResourceGroup
- Cmd : echo %varResourceGroup%
À l’étape 3, Remplir des variables à utiliser dans des scripts, vous utilisez des exemples détaillés de syntaxe de variable.
En savoir plus sur les différences entre les langages de script
Chaque paramètre Azure CLI est une chaîne. Toutefois, chaque langage de script a ses propres règles pour la gestion des guillemets simples et doubles, des espaces et des valeurs de paramètre.
Valeur de chaîne | Azure CLI | PowerShell | Cmd |
---|---|---|---|
Texte | 'text' ou « text » | 'text' ou « text » | "text" |
Number | \`50\` | ``50`` | `50` |
Boolean | \`true\` | ``false`` | 'true' |
Date | '2021-11-15' | '2021-11-15' | '2021-11-15' |
JSON | '{"key":"value"}' ou "{"key":"value"}" | '{"key » : « value"}' ou « {'"key'" » : '"value'"} » ou « {"key"" » : « "value""} » | "{"key":"value"}" |
De nombreux paramètres Azure CLI acceptent une liste de valeurs séparées par un espace. Cela impacte les guillemets.
- Liste sans guillemets séparée par des espaces : --parameterName firstValue secondValue
- Liste avec guillemets séparée par des espaces : --parameterName "firstValue" "secondValue"
- Valeurs qui contiennent un espace : --parameterName "value1a value1b" "value2a value2b" "value3"
Si vous ne savez pas comment votre chaîne sera évaluée par votre langage de script, retournez la valeur d’une chaîne à votre console ou utilisez --debug
comme expliqué dans les commandes de référence Azure CLI de débogage.
Créer un compte de stockage pour appliquer ce que vous avez appris
Le reste de cette étape de tutoriel explique les règles d’utilisation des guillemets dans les commandes Azure CLI, et utilise le groupe de ressources créé dans Préparer votre environnement pour Azure CLI. Remplacez <msdocs-tutorial-rg-00000000>
par le nom de votre groupe de ressources.
Créez un compte de stockage Azure pour l’utiliser dans ce tutoriel. Cet exemple attribue un ID aléatoire au nom du compte de stockage, mais si vous voulez utiliser un autre nom, consultez Vue d’ensemble du compte de stockage pour connaître les règles de nom de compte de stockage.
Important
Avant de pouvoir créer un compte de stockage, le Microsoft.Storage
fournisseur de ressources doit être inscrit dans votre abonnement. Pour en savoir plus sur l’inscription des types de ressources, consultez Inscrire un fournisseur de ressources.
Cet exemple de script suivant illustre la syntaxe spécifique au langage de script pour les éléments suivants :
- Continuation de ligne
- Utilisation des variables
- Identificateurs aléatoires
- Commande
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
Remarque
Vous venez de recevoir une erreur « Abonnement introuvable » ? Cette erreur se produit lorsqu’elle Microsoft.Storage
n’est pas inscrite dans l’abonnement actif. Pour inscrire un fournisseur de ressources, consultez fournisseurs et types de ressources Azure.
Azure CLI renvoie plus de 100 lignes de code JSON en sortie quand un compte de stockage est créé. La sortie de dictionnaire JSON suivante contient des champs omis afin de la raccourcir.
{
"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"
}
Créer des balises pour s’entraîner à utiliser les différents guillemets
En utilisant az storage account update, ajoutez des balises pour vous aider à identifier votre compte de stockage et à en savoir plus sur les différences de guillemets. Ces exemples de script illustrent la syntaxe spécifique au langage de script pour les éléments suivants :
- Valeurs contenant des espaces
- Guillemets pour les espaces vides
- Échappement des caractères spéciaux
- Utilisation de variables
Le paramètre --tags
accepte une liste de paires clé:valeur séparées par des espaces. Remplacez <msdocs-tutorial-rg-00000000>
par le nom de votre groupe de ressources et <msdocssa00000000>
par le nom de votre compte de stockage 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 vous ne voulez pas remplacer les balises précédentes dans cette étape du tutoriel, utilisez la commande az tag update en définissant le paramètre --operation
sur 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
Comparer d’autres scripts spécifiques au langage
Examinez plus en détail ces différences de script. Ces exemples décrivent les différences de guillemets pour :
- Passer une chaîne JSON comme valeur de paramètre
- Filtrer les résultats avec le paramètre
--query
- Numéros
- Valeurs booléennes
- Dates
Exemple de paramètre contenant une chaîne JSON. Ce script est fourni pour référence ultérieure, car nous n’utilisons pas az rest
dans ce tutoriel.
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}}}'
Exemple de filtrage pour une valeur numérique. À moins que vous ayez une machine virtuelle dans votre abonnement actuel, cet exemple est fourni pour référence ultérieure.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Exemple de filtrage d’une valeur booléenne en utilisant le compte de stockage créé dans ce tutoriel.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Exemples de filtrage d’une date en utilisant le compte de stockage créé dans ce tutoriel.
# 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}"
Commandes de référence Azure CLI de débogage
Utiliser le paramètre --debug
Azure CLI offre un paramètre --debug
qui peut être utilisé avec n’importe quelle commande. La sortie de débogage est étendue, mais elle vous fournit des informations, notamment les suivantes :
- Arguments de commande (valeurs de paramètre) interprétés par votre langage de script
- Emplacement de votre fichier journal
- Détails de l’appel d’API
- Erreurs d’exécution
Si, lorsque vous utilisez des commandes Azure CLI, vous rencontrez des difficultés à comprendre et corriger une erreur d’exécution, --debug
répondez à vos questions pour voir les étapes d’exécution d’Azure CLI.
Voici une petite partie de la sortie de débogage lors de la création d’un compte de stockage :
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
...
Pour plus d’informations sur la résolution des problèmes, consultez Résolution des problèmes liés à Azure CLI.
Utiliser la commande echo
Bien que --debug
vous indique exactement ce qu’Azure CLI interprète, une deuxième option est de renvoyer la valeur d’une expression à votre console. Cette méthode est utile pour vérifier les résultats de --query
, décrit en détail dans Remplir des variables à utiliser dans des scripts.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Dépannage
Voici des erreurs courantes quand une syntaxe de commande de référence Azure CLI n’est pas écrite correctement :
« Demande incorrecte ... {something} n’est pas valide » peut être dû à un espace, un guillemet simple ou double, ou des guillemets manquants.
« Jeton inattendu... » est vu quand il y a un espace ou un guillemet supplémentaire.
L’erreur « Valeur jmespath_type non valide » est souvent liée à des guillemets incorrects dans le paramètre
--query
.L’erreur « La référence de variable n’est pas valide » est reçue quand une chaîne n’est pas correctement mise en forme en raison de la concaténation ou d’un caractère d’échappement manquant.
Les « arguments non reconnus » sont souvent provoqués par un caractère de continuation de ligne incorrect.
L’erreur « Expression manquante après l’opérateur unaire » est visible quand un caractère de continuation de ligne est manquant.
Pour obtenir des conseils de dépannage supplémentaires, consultez Résolution des problèmes liés aux commandes Azure CLI.
Obtenir plus d’informations
Vous voulez plus d’informations sur un des sujets abordés dans cette étape de tutoriel ? Utilisez les liens de ce tableau pour en savoir plus.
Objet | En savoir plus |
---|---|
Différences de scripts | Guillemets de différences entre les langages de script |
Règles de guillemets Bash | |
Règles de guillemets PowerShell | |
Considérations relatives à l’exécution d’Azure CLI dans un langage de script PowerShell | |
Conseils pour la ligne de commande Windows | |
Paramètres | Utiliser des guillemets dans les paramètres Azure CLI |
Trouver d’autres exemples de syntaxe pour Bash, PowerShell et Cmd dans Sortie de commande de requête avec JMESPath | |
Dépannage | Résolution des problèmes liés aux commandes Azure CLI |
étape suivante
Maintenant que vous avez appris à écrire la syntaxe Azure CLI pour Bash, PowerShell et Cmd, passez à l’étape suivante pour apprendre à extraire des valeurs dans une variable.