Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les commandes Azure CLI peuvent être exécutées dans les langages de script Bash, PowerShell et shell de commande Windows (cmd). Toutefois, il existe des différences subtiles de script. Dans cette étape du tutoriel, apprenez à créer votre premier compte de stockage Azure et à formater les valeurs de paramètres pour les trois langages de script.
Conditions préalables
- Vous avez rempli les prérequis pour préparer votre environnement.
- Vous avez accès à un groupe de ressources avec des autorisations
contributorou supérieures au niveau d’un groupe de ressources.
Soyez attentif aux caractères indiquant la 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 | Accent grave inversé (`) |
| Cmd | Caret (^) |
Conseil / Astuce
Le bouton Copier en haut à droite des blocs de code Azure CLI supprime la barre oblique inverse (\) et le guillemet inverse (`) par conception. Pour 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’utilisation | Cogner | PowerShell | Cmd |
|---|---|---|---|
| Créer une variable | variableName=varValue | $variableName="varValue" | définir variableNom=valeurVar |
| Utiliser une variable comme valeur de paramètre | nom_variable | $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, remplissez des variables à utiliser dans des scripts, vous utilisez des exemples détaillés de syntaxe variable.
Découvrez les différences de citation 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 gérer les guillemets simples et doubles, les espaces et les valeurs de paramètre.
| Valeur de chaîne | Azure CLI (Interface de ligne de commande Azure) | PowerShell | Cmd |
|---|---|---|---|
| Texto | 'text' ou « text » | 'text' ou « text » | « texte » |
| Numéro | \'50\' | ''50'' | '50' |
| Booléen | `vrai` | ''false'' | vrai |
| Date (Jour/Mois/Année) | 15/11/2021 | 15/11/2021 | 15/11/2021 |
| JSON | '{"key":"value"}' ou "{"key":"value"}" | '{"key » : « value"}' ou « {'"key'" » : '"value'"} » ou « {"key"" » : « "value""} » | {"clé":"valeur"} |
De nombreux paramètres Azure CLI acceptent une liste de valeurs séparées par un espace. Ce format influence 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 est é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 Debug.
Créer un compte de stockage pour appliquer ce que vous avez appris
Le reste de cette étape du tutoriel démontre l'utilisation des guillemets dans les commandes d'Azure CLI, à l’aide du groupe de ressources créé dans la section Préparer votre environnement pour l'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 affecte un ID aléatoire au nom du compte de stockage. Toutefois, si vous souhaitez utiliser un autre nom, reportez-vous à la vue d’ensemble du compte de stockage pour 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 texte
- 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
Avez-vous reçu une erreur « Abonnement introuvable » ? Cette erreur se produit quand Microsoft.Storage n’est pas inscrit 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 à citer des différences.
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 syntaxe des commandes. Ces exemples de script illustrent la syntaxe spécifique au langage de script pour les éléments suivants :
- Valeurs contenant des espaces
- Citer des 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émontrent les différences dans l'utilisation des 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 une référence ultérieure, car nous ne travaillons pas avec az rest dans ce didacticiel.
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}"
Déboguer les commandes de référence d'Azure CLI
Utiliser le paramètre de débogage
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 vous rencontrez des difficultés à comprendre et corriger une erreur d’exécution lors de l’utilisation des commandes Azure CLI, --debug répond à vos questions pour voir les étapes d’exécution d’Azure CLI.
Voici une 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 lors de la vérification des résultats du --query, qui est abordé en détail dans les variables de remplissage à utiliser dans les scripts.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Résolution des problèmes
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... » s'affiche quand il y a un espace ou un guillemet en trop.
- L’erreur « Valeur jmespath_type non valide » est souvent due à une mauvaise utilisation des guillemets dans le paramètre
--query. - « La référence de variable n’est pas valide » est reçue lorsqu’une chaîne n’est pas correctement mise en forme, souvent 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 » se produit lorsqu'un caractère de continuation de ligne est manquant.
Pour plus d’informations sur la résolution des problèmes, consultez Résolution des problèmes liés aux commandes Azure CLI.
Obtenir plus de détails
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.
| Sujet | Pour en savoir plus |
|---|---|
| Différences de scripts | Citer les différences entre les langages de script |
| Règles de guillemets Bash | |
| Règles d'utilisation des guillemets dans 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 des exemples supplémentaires de syntaxe Bash, PowerShell et Cmd dans la sortie de commande de requête utilisant JMESPath | |
| Résolution des problèmes | 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.