Tipps zur erfolgreichen Verwendung der Azure CLI

Abgeschlossen

In diesem Modul haben Sie gelernt, eine Umgebung auszuwählen, Azure CLI zu installieren, Azure CLI-Befehle interaktiv auszuführen und ein Bash-Skript zu erstellen. Lassen Sie uns einen Schritt weiter lernen und uns auf die erfolgreiche Verwendung der Azure CLI konzentrieren. In dieser Lektion erfahren Sie, wie Azure CLI hinter der Befehlszeile funktioniert, und bietet Tipps zur Problembehandlung.

Tipp

Dieses Modul ist ein Kurs auf fortgeschrittener Ebene, und diese Lektion führt Sie tief in Azure CLI. Wenn Sie noch nicht mit der Befehlszeilenprogrammierung vertraut sind, konzentrieren Sie sich auf die Konzepte. Die Details werden leichter zu verstehen, während Sie Erfahrung sammeln. Gib nicht auf!

Grundlegendes zu Azure CLI-API-Aufrufen

Hinter der grafischen Benutzeroberfläche des Azure-Portals und der Befehlszeile der Azure CLI werden API-Aufrufe ausgeführt. Sie können die API-Aufrufe der Azure CLI mithilfe des --debug Parameters verfügbar machen. Dies geschieht, wenn Sie eine neue Ressourcengruppe erstellen:

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

Hier sehen Sie die Terminalausgabe von Azure Cloud Shell mit einigen Zeilen, die aus Platzgründen weggelassen wurden. Beachten Sie dieses wichtige Ergebnis:

  • Befehlsargumente: Es ist die Skriptsprache, nicht Azure CLI, die Befehlsargumente (Parameter) analysiert. Diese Ausgabeeigenschaft ist der erste Ort, an dem ein Befehl zu einem Fehler führt.
  • Azlogging: Dieser Pfad ist der Ort, an dem Die Protokolldatei gespeichert ist.
  • Anforderungsheader: Diese Header sind die Parameterwerte, die vom PUT-Befehl übergeben werden.
  • Antwortinhalt: Diese Ausgabe wird ohne die vollständige --debug Ausgabe an die Konsole zurückgegeben.
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
...

Wichtige Erkenntnisse aus den Debuginformationen

  • Befehlsanalyse: Die Skriptsprache (nicht Azure CLI) analysiert Argumente. Sehen Sie hier zuerst nach, wenn Sie Probleme beheben.
  • Speicherort der Protokolldatei: Finden Sie detaillierte Protokolle am in azlogging angegebenen Pfad für die Post-Mortem-Analyse.
  • API-Details: Sehen Sie sich den tatsächlichen REST-API-Aufruf an, einschließlich der HTTP-Methode (PUT, GETusw.).
  • Exit-Code: Ein Wert von 0 zeigt Erfolg an; Werte ungleich Null zeigen Fehler an.

Einige Azure CLI-Befehle führen mehrere Aktionen aus. Verwenden Sie --debug, um zu sehen, wie jeder Befehl von Azure CLI ausgeführt wird. Noch nützlicher: Verwenden Sie --debug, um zu untersuchen, warum ein Azure CLI-Skript unerwartete Ergebnisse erzeugt.

Problembehandlung mit --debug

Wie oft haben Sie als Entwickler gedacht: "Diese Aufgabe sollte so einfach sein! Warum funktioniert mein Skript nicht?" Wenn Sie unerwartete Ergebnisse von Azure CLI-Befehlen erhalten, ist der --debug Parameter Ihr Freund! Lassen Sie uns ein Beispiel für ein Unternehmen mit 100 Azure-Speicherkonten durcharbeiten. Sie müssen diese Konten finden, bei denen der öffentliche BLOB-Zugriff aktiviert ist.

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

Wenn ein Parameterwert für die Skriptsprache, die den Wert analysiert, nicht ordnungsgemäß formatiert ist, wird eine invalid jmespath_type value Fehlermeldung angezeigt:

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'

Sehen Sie sich den Variablenwert an, den Bash für allowBlobPublicAccess übergibt. In der Tat, wo ist der Wert? Warum fehlt es?

Denken Sie daran, dass es sich um die Umgebung (auch als "Skriptsprache" bezeichnet) befindet, die Azure CLI-Variablenwerte analysiert. Jede Skriptsprache und sogar Versionen derselben Skriptsprache können unterschiedliche Ergebnisse erzielen. Hier ist die richtige Methode zum Übergeben eines booleschen Parameterwerts in 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"
]

Tipp

Der Hauptunterschied besteht darin, die Backticks mit \true`` zu maskieren, sodass Bash sie nicht als Befehlsersetzung interpretiert.

Greifen Sie auf das wichtige Konzept von --debug, und Sie sind auf dem Weg, Azure CLI erfolgreich in Ihrer Umgebung ihrer Wahl zu verwenden.

Unterschiede bei der Skriptsprachensyntax

Da wir gerade darüber gesprochen haben --debug, besteht der nächste Schritt darin, sich bewusst zu machen, was die meisten Skriptfehler verursacht. Ein in Bash geschriebenes Skript muss so geändert werden, dass es erfolgreich in PowerShell oder cmd.exe ausgeführt wird, wenn Ihr Skript eines der folgenden Konstrukte enthält:

  • Zeilenfortsetzungszeichen
  • Variablen
  • Zufällige Bezeichner
  • Angebote
  • Programmiersprachenkonstrukte

Hier sind einige Beispiele:

Syntax Bash PowerShell cmd.exe
Zeilenfortsetzungszeichen Umgekehrter Schrägstrich (\) Backtick (`) Caret (^)
Variablenbenennung variableName=varValue $variableName="varValue" set variableName=varValue
Zahl als Zeichenfolge \50'' `50` `50`
Boolescher Wert als Zeichenfolge \wahr `false` 'true'
Zufalls-ID let "randomIdentifier=$RANDOM*$RANDOM" $randomIdentifier = (New-Guid).ToString().Substring(0,8) set randomIdentifier=%RANDOM%
Schleifen until, whilefor for, , foreachwhile, , do-whiledo-until for
Schreiben in Konsole echo Write-Host (bevorzugt) oder echo echo

Häufige Probleme

Diese Beispieltabelle ist nicht all-inclusive. Was wichtig ist zu verstehen, wenn sie einen Azure CLI-Fehler erhalten, besteht darin, zuerst zu berücksichtigen, dass es ein Syntaxproblem für Ihre Umgebung gibt. Testen Sie diese Möglichkeit, indem Sie Ihr Skript in eine andere Skriptsprache wie Azure Cloud Shell kopieren und einfügen. Verwenden Sie --debug in beiden Umgebungen und beachten Sie die Unterschiede in der command arguments Eigenschaft der Ausgabe.

Von Bedeutung

Beachten Sie beim Kopieren von Codeblöcken aus Microsoft-Artikeln , dass die meisten Azure CLI-Dokumentationen bei Microsoft für Bash geschrieben und in Azure Cloud Shell getestet werden.

Weitere Möglichkeiten zum Abrufen von Hilfe

Verwenden Sie az find

Führen Sie eine kurze Tour durch Azure CLI-Befehle aus, indem Sie die folgenden Beispiele ausführen:

Suchen Sie die am häufigsten verwendeten Befehle im Zusammenhang mit dem Wort-BLOB:

az find blob

Zeigen Sie die am häufigsten verwendeten Befehle für eine Azure CLI-Befehlsgruppe an, z. B.:

az find "az storage"

Zeigen Sie die am häufigsten verwendeten Parameter und Unterbefehle für einen Azure CLI-Befehl an:

az find "az storage account create"

Verwenden Sie --help

Wenn Sie den Namen des gewünschten Befehls bereits kennen, erhalten Sie mit dem --help-Argument für diesen Befehl ausführlichere Informationen zum Befehl und im Fall einer Befehlsgruppe eine Liste der verfügbaren Unterbefehle. Wenn Sie mit unseren Azure Storage-Beispielen fortfahren, finden Sie hier eine Liste der Untergruppen und Befehle zum Verwalten des BLOB-Diensts eines Speicherkontos:

az storage account blob-service-properties --help

Tipp

Verwenden Sie --help zusammen mit einem beliebigen Befehl oder Unterbefehl, um detaillierte Nutzungsinformationen zu diesem Befehl zu erhalten, ohne das Terminal verlassen zu müssen.

A bis Z-Dokumentationsindizes

Verwenden Sie einen von mehreren A bis Z-Indizes, um Beispiele für Azure CLI-Referenzbefehle zu finden:

  • Referenzindex: Stellt eine A bis Z-Liste aller Referenzgruppen bereit. Erweitern Sie die linke Navigationsleiste für Untergruppen.

  • Konzeptionelle Artikelliste der Azure CLI: Stellt eine A-zu-Z-Liste von Schnellstarts, Anleitungen, Lernprogrammen und Lernmodulen bereit, die erläutern, wie Sie Azure CLI-Referenzbefehle in realen Szenarien verwenden. In der Artikelliste werden Artikel nach Azure CLI-Befehlsgruppe gruppiert, wie az account, dann az acr usw. Verwenden Sie Strg+F in Windows (Cmd+F in macOS), um schnell zur Befehlsgruppe Ihrer Wahl zu springen.

  • Azure CLI-Beispielskripte: Der Index hat drei Registerkarten:

Copilot verwenden

Sowohl das Azure-Portal als auch Microsoft Edge bieten Copilot-Erfahrungen , die Informationen zu Azure CLI-Referenzbefehlen , Beispielen und veröffentlichten Artikeln zurückgeben. Copilot bietet auch Links zu verwandten Stack Overflow-Fragen . Wenn Sie mit mehreren Skriptschritten eine schwierige Aufgabe haben, ist Copilot hilfreich beim Kompilieren mehrerer Informationsquellen, um Ihre Frage zu beantworten.

Hinweis

GitHub Copilot kann Ihnen auch helfen, Azure CLI-Skripts direkt in Ihrem Code-Editor zu schreiben, indem es intelligente Codevervollständigung und Vorschläge bereitstellt.