Conseils pour utiliser l’interface de ligne de commande Azure avec succès

Effectué

Dans ce module, vous avez appris à choisir un environnement, installer Azure CLI, exécuter des commandes Azure CLI de manière interactive et créer un script Bash . Prenons l’apprentissage d’une étape plus loin et nous allons vous concentrer sur l’utilisation d’Azure CLI avec succès. Cette unité vous explique comment Azure CLI fonctionne derrière la ligne de commande et vous donne des conseils pour la résolution des problèmes.

Conseil / Astuce

Ce module est un cours de niveau avancé, et cette unité vous guide dans Azure CLI. Si vous débutez avec la programmation en ligne de commande, concentrez-vous sur les concepts. Les détails deviennent plus faciles à comprendre à mesure que vous gagnez de l’expérience. N’abandonnez pas !

Comprendre les appels d’API Azure CLI

L’exécution derrière l’interface utilisateur graphique du portail Azure et la ligne de commande d’Azure CLI sont des appels d’API. Vous pouvez exposer les appels d’API d’Azure CLI à l’aide du --debug paramètre. Voici ce qui se passe lorsque vous créez un groupe de ressources :

az group create --location westus2 --name myResourceGroupName --debug

Voici la sortie du terminal d’Azure Cloud Shell avec certaines lignes omises pour la concision. Notez cette sortie importante :

  • Arguments de commande : Il s’agit du langage de script, et non d’Azure CLI, qui analyse les arguments de commande (paramètres). Cette propriété de sortie est le premier endroit à rechercher lorsqu’une commande génère une erreur.
  • azlogging : Ce chemin d’accès est l’emplacement où votre fichier journal est stocké.
  • En-têtes de requête : Ces en-têtes sont les valeurs de paramètre passées par la commande PUT .
  • Contenu de la réponse : Cette sortie est retournée à la console sans la sortie complète --debug .
cli.knack.cli: Command arguments: ['group', 'create', '--location', 'westus2', '--name', 'myResourceGroupName', '--debug']
cli.knack.cli: __init__ debug log:
...
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'group': ['azure.cli.command_modules.resource']
cli.azure.cli.core: Loading command modules:
...
cli.azure.cli.core: Loaded 53 groups, 233 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : group create
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/2025-10-08.21-47-27.group_create.5217.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myResourceGroupName?api-version=2022-09-01'
cli.azure.cli.core.sdk.policies: Request method: 'PUT'
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': '23'
cli.azure.cli.core.sdk.policies:     'Accept': 'application/json'
cli.azure.cli.core.sdk.policies:     'x-ms-client-request-id': 'c79caddc-ed78-11ef-8a83-00155dbc433c'
cli.azure.cli.core.sdk.policies:     'CommandName': 'group create'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '--location --name --debug'
...
cli.azure.cli.core.sdk.policies: Response content:
...
{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName",
  "location": "westus2",
  "managedBy": null,
  "name": "myResourceGroupName",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}
cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7f98a6bc7820>]
az_command_data_logger: exit code: 0
...

Insights clés à partir de la sortie de débogage

  • Analyse des commandes : Le langage de script (et non Azure CLI) analyse les arguments. Regardez d’abord ici lors de la résolution des problèmes.
  • Emplacement du fichier journal : recherchez des journaux détaillés sur le chemin d’accès indiqué dans azlogging pour l’analyse post-mortem.
  • Détails de l’API : Consultez l’appel réel de l’API REST en cours, y compris la méthode HTTP (PUT, GETetc.).
  • Code de sortie : Valeur indiquant 0 la réussite ; les valeurs non nulles indiquent des erreurs.

Certaines commandes Azure CLI effectuent plusieurs actions. Permet --debug de voir chaque commande qu’Azure CLI exécute. Encore plus utile, utilisez --debug pour dépanner un script Azure CLI qui donne des résultats inattendus.

Résolution des problèmes avec --debug

Combien de fois en tant que développeur avez-vous pensé : « Cette tâche devrait être si simple ! Pourquoi mon script ne fonctionne-t-il pas ? Lorsque vous recevez des résultats inattendus à partir de commandes Azure CLI , le --debug paramètre est votre ami ! Examinons un exemple d’entreprise avec 100 comptes de stockage Azure. Vous devez rechercher ces comptes dans lesquels l'accès public aux objets blob est activé.

# Bash script - INCORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == `true`].id"

Lorsqu’une valeur de paramètre n’est pas correctement mise en forme pour le langage de script qui analyse la valeur, vous recevez une invalid jmespath_type value erreur :

cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-rg-00000000', '--query', '[?allowBlobPublicAccess == ].id', '--debug']
...
cli.azure.cli.core.azclierror: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'
az_command_data_logger: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'

Examinez la valeur de variable Bash qui est transmise pour allowBlobPublicAccess. En fait, où est la valeur ? Pourquoi est-il manquant ?

N’oubliez pas que c’est l’environnement (également appelé « langage de script ») qui analyse les valeurs des variables Azure CLI . Chaque langage de script , et même les versions du même langage de script, peuvent produire des résultats différents. Voici le bon moyen de passer une valeur de paramètre booléenne dans Bash :

# Bash script - CORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == \`true\`].id" --debug
cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-rg-00000000', '--query', '[?allowBlobPublicAccess == `true`].id', '--debug']
...
[
  "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-rg-00000000/providers/Microsoft.Storage/storageAccounts/msdocssa00000000"
]

Conseil / Astuce

La différence clé consiste à échapper aux backticks avec \true'' afin que Bash ne les interprète pas comme une substitution de commande.

Saisissez le concept important de --debug, et vous êtes sur votre chemin d’utilisation d’Azure CLI avec succès dans votre environnement de choix.

Différences de syntaxe du langage de script

Comme nous venons de parler de --debug, l’étape suivante consiste à prendre conscience des causes de la plupart des erreurs de script. Un script écrit dans Bash doit être modifié pour s’exécuter correctement dans PowerShell ou cmd.exe si votre script contient l’une des constructions suivantes :

  • Caractère de continuation de ligne
  • Variables
  • Identificateurs aléatoires
  • Devis
  • Constructions du langage de programmation

Voici quelques exemples :

Syntaxe Bash PowerShell cmd.exe
Caractères de continuation de ligne Barre oblique inverse (\) Backtick (`) Caret (^)
Nommage des variables variableName=varValue $variableName="varValue" set variableName=varValue
Nombre sous forme de chaîne \50'' `50` `50`
Boolean en tant que chaîne \vrai `false` 'true'
ID aléatoire let "randomIdentifier=$RANDOM*$RANDOM" $randomIdentifier = (New-Guid).ToString().Substring(0,8) set randomIdentifier=%RANDOM%
Bouclage until, whilefor for, , foreachwhile, , do-whiledo-until for
Écrire dans la console echo Write-Host (préféré) ou echo echo

Pièges courants

Cet exemple de tableau n’est pas inclusif. Ce qui est important de comprendre lors de la réception d’une erreur Azure CLI consiste à prendre en compte d’abord qu’il peut y avoir un problème de syntaxe pour votre environnement. Testez cette possibilité en copiant et en collant votre script dans un autre langage de script, comme Azure Cloud Shell. Utilisez --debug dans les deux environnements et notez les différences dans la propriété command arguments de la sortie.

Important

Lors de la copie de code à partir d’articles Microsoft , sachez que la plupart de la documentation Azure CLI sur Microsoft est écrite pour Bash et testée dans Azure Cloud Shell.

Autres moyens d’obtenir de l’aide

Utiliser az find

Découvrez rapidement les commandes Azure CLI en suivant les exemples suivants :

Recherchez les commandes les plus populaires liées à blob :

az find blob

Montrer les commandes les plus populaires pour un groupe de commandes Azure CLI, par exemple :

az find "az storage"

Afficher les paramètres et sous-commandes les plus populaires pour une commande Azure CLI :

az find "az storage account create"

Utilisez --help

Si vous connaissez déjà le nom de la commande souhaitée, l’argument --help de cette commande vous permet d’obtenir des informations plus détaillées sur la commande ainsi que la liste des sous-commandes disponibles pour un groupe de commandes. En suivant nos exemples de stockage Azure , voici comment obtenir la liste des sous-groupes et commandes pour la gestion du service blob d’un compte de stockage :

az storage account blob-service-properties --help

Conseil / Astuce

Utilisez --help une commande ou une sous-commande pour obtenir des informations d’utilisation détaillées sans quitter le terminal.

Index de documentation A à Z

Pour trouver des exemples pour les commandes de référence Azure CLI , utilisez l’un des plusieurs index A à Z :

  • Index de référence : Fournit une liste A à Z de tous les groupes de référence. Développez la barre de navigation gauche pour les sous-groupes.

  • Liste d’articles conceptuels Azure CLI : fournit une liste A à Z des guides de démarrage rapide, des guides pratiques, des didacticiels et des modules d’apprentissage qui expliquent comment utiliser des commandes de référence Azure CLI dans des scénarios réels. L’article répertorie les articles par groupe de commandes Azure CLI , par az accountexemple, puis az acr, etc. Utilisez Ctrl+F dans Windows (Cmd+F dans macOS) pour accéder rapidement au groupe de commandes de votre choix.

  • Exemples de scripts Azure CLI : L’index comporte trois onglets :

Utiliser Copilot

Le portail Azure et Microsoft Edge offrent des expériences Copilot qui retournent des informations sur les commandes de référence de l’Azure CLI, des exemples, et des articles publiés. Copilot fournit également des liens vers les questions Stack Overflow associées. Lorsque vous avez un travail difficile à effectuer avec plusieurs étapes de script, Copilot est utile pour compiler plusieurs sources d’informations pour répondre à votre question.

Note

GitHub Copilot peut également vous aider à écrire des scripts Azure CLI directement dans votre éditeur de code, en fournissant une auto-complétion intelligente et des suggestions intelligentes.