Tips voor het gebruik van de Azure CLI
In deze module hebt u geleerd om een omgeving te kiezen, Azure CLI te installeren, Azure CLI-opdrachten interactief uit te voeren en een Bash-script te maken. Laten we een stap verder gaan en ons richten op het gebruik van Azure CLI . In deze les leert u hoe Azure CLI achter de opdrachtregel werkt en geeft u tips voor het oplossen van problemen.
Aanbeveling
Deze module is een cursus op geavanceerd niveau en in deze les gaat u dieper in azure CLI. Als u niet eerder met opdrachtregelprogramma's werkt, kunt u zich richten op de concepten. De details worden gemakkelijker te begrijpen wanneer u ervaring krijgt. Niet opgeven!
Inzicht in Azure CLI-API-aanroepen
Uitvoeren achter de grafische gebruikersinterface van Azure Portal en de opdrachtregel van Azure CLI zijn API-aanroepen. U kunt de API-aanroepenvan Azure CLI beschikbaar maken met behulp van de --debug parameter. Dit gebeurt er wanneer u een nieuwe resourcegroep maakt:
az group create --location westus2 --name myResourceGroupName --debug
Hier volgt de terminaluitvoer van Azure Cloud Shell met enkele regels die zijn weggelaten om kort te zijn. Let op deze belangrijke uitvoer:
- Opdrachtargumenten: Dit is de scripttaal, niet Azure CLI, die opdrachtargumenten (parameters) parseert. Deze uitvoereigenschap is de eerste plaats om te kijken wanneer een opdracht een fout oplevert.
- azlogging: Dit pad is waar het logboekbestand wordt opgeslagen.
- Aanvraagheaders: Deze headers zijn de parameterwaarden die worden doorgegeven door de PUT-opdracht .
-
Antwoordinhoud: Deze uitvoer wordt geretourneerd naar de console zonder de volledige
--debuguitvoer.
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
...
Belangrijke inzichten uit foutopsporingsuitvoer
- Opdracht parseren: De scripttaal (niet Azure CLI) parseert argumenten. Kijk hier eerst bij het oplossen van problemen.
-
Locatie van logboekbestand: Zoek gedetailleerde logboeken op het pad dat wordt weergegeven
azloggingvoor post-mortemanalyse. -
API-gegevens: Bekijk de werkelijke REST API-aanroep die wordt gedaan, inclusief de HTTP-methode (
PUT,GETenzovoort). -
Afsluitcode: Een waarde van
0geeft aan dat het succes is geslaagd; niet-nulwaarden geven fouten aan.
Sommige Azure CLI-opdrachten voeren meerdere acties uit. Gebruik --debug om elke opdracht te zien die Azure CLI uitvoert. Nog nuttiger, gebruik --debug dit om problemen op te lossen waarom een Azure CLI-script onverwachte resultaten produceert.
Problemen oplossen met --debug
Hoe vaak als ontwikkelaar hebt u gedacht: "Deze taak zou zo eenvoudig moeten zijn! Waarom werkt mijn script niet? Wanneer u onverwachte resultaten van Azure CLI-opdrachten ontvangt, is de --debug parameter uw vriend. Laten we een voorbeeld van een bedrijf met 100 Azure-opslagaccounts doorlopen. U moet deze accounts vinden waarvoor openbare blob-toegang is ingeschakeld.
# Bash script - INCORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == `true`].id"
Wanneer een parameterwaarde niet juist is opgemaakt voor de scripttaal die de waarde parseert, krijgt u een invalid jmespath_type value foutmelding:
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'
Kijk naar de variabelewaarde die Bash doorgeeft voor allowBlobPublicAccess. Waar is de waarde? Waarom ontbreekt het?
Vergeet niet dat het de omgeving is (ook wel 'scripttaal' genoemd) waarmee waarden van azure CLI-variabelen worden geparseerd. Elke scripttaal en zelfs versies van dezelfde scripttaal kunnen verschillende resultaten opleveren. Hier volgt de juiste manier om een booleaanse parameterwaarde door te geven 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"
]
Aanbeveling
Het belangrijkste verschil is het ontsnappen aan de backticks met \true`` zodat Bash ze niet interpreteert als commando substitutie.
Begrijp het belangrijke concept van --debug, en u bent op weg naar het gebruik van Azure CLI in uw gewenste omgeving.
Verschillen in taalsyntaxis voor scripts
Omdat we net klaar zijn met --debugpraten, is de volgende stap om op de hoogte te zijn van wat de meeste scriptfouten veroorzaakt. Een script dat in Bash is geschreven, moet worden gewijzigd om te worden uitgevoerd in PowerShell of cmd.exe als uw script een van deze constructies bevat:
- Regelvervolgtekens
- Variabelen
- Willekeurige identificaties
- Offertes
- Programmeertaalconstructies
Hieronder volgen een aantal voorbeelden:
| Syntaxis | Bash (een Unix-shell en programmeertaal) | PowerShell | cmd.exe |
|---|---|---|---|
| Regelvervolgtekens | Backslash (\) |
Backtick (`) |
Caret (^) |
| Naamgeving van variabelen | variableName=varValue |
$variableName="varValue" |
set variableName=varValue |
| Getal als tekenreeks |
\50'' |
`50` |
`50` |
| Booleaanse waarde als tekenreeks |
\waar'' |
`false` |
'true' |
| Willekeurige id | let "randomIdentifier=$RANDOM*$RANDOM" |
$randomIdentifier = (New-Guid).ToString().Substring(0,8) |
set randomIdentifier=%RANDOM% |
| Looping |
until, whilefor |
for
foreach, while, do-whiledo-until |
for |
| Schrijven naar console | echo |
Write-Host (voorkeur) of echo |
echo |
Veelvoorkomende valkuilen
Deze voorbeeldtabel is niet all-inclusive. Wat belangrijk is om te begrijpen wanneer u een Azure CLI-fout ontvangt, is om eerst te overwegen dat er mogelijk een syntaxisprobleem is voor uw omgeving. Test deze mogelijkheid door uw script te kopiƫren en te plakken in een andere scripttaal, zoals Azure Cloud Shell. Gebruik --debug in beide omgevingen en noteer de verschillen in de command arguments eigenschap van de uitvoer.
Belangrijk
Wanneer u codeblokken uit Microsoft-artikelen kopieert, moet u er rekening mee houden dat de meeste Azure CLI-documentatie bij Microsoft is geschreven voor Bash en is getest in Azure Cloud Shell.
Meer manieren om hulp te krijgen
Gebruik az find
Volg de volgende voorbeelden om een korte rondleiding door Azure CLI-opdrachten te volgen:
Zoek de populairste opdrachten met betrekking tot de word-blob:
az find blob
De populairste opdrachten voor een Azure CLI-opdrachtgroep weergeven, zoals az storage:
az find "az storage"
De populairste parameters en subopdrachten weergeven voor een Azure CLI-opdracht :
az find "az storage account create"
--help gebruiken
Als u de naam van de gewenste opdracht al kent, krijgt u met het --help argument voor die opdracht gedetailleerdere informatie over de opdracht en een lijst met de beschikbare subopdrachten voor een opdrachtgroep. Als u doorgaat met onze Voorbeelden van Azure Storage , kunt u als volgt een lijst ophalen met de subgroepen en opdrachten voor het beheren van de blobservice van een opslagaccount:
az storage account blob-service-properties --help
Aanbeveling
Gebruik --help met elke opdracht of subopdracht om gedetailleerde gebruiksinformatie op te halen zonder de terminal te verlaten.
Indexen van A-Z-documentatie
Als u voorbeelden voor Azure CLI-referentieopdrachten wilt vinden, gebruikt u een van de volgende A-Z-indexen:
Referentieindex: Biedt een A-Z-lijst met alle referentiegroepen. Vouw de linkernavigatiebalk voor subgroepen uit.
Conceptuele artikellijst van Azure CLI: bevat een A-Z-lijst met quickstarts, instructiegidsen, zelfstudies en leermodules die uitleggen hoe u Azure CLI-referentieopdrachten gebruikt in praktijkscenario's. In de lijst met artikelen worden artikelen gegroepeerd op azure CLI-opdrachtgroep , zoals
az account, danaz acr, enzovoort. Gebruik Ctrl+F in Windows (Cmd+F in macOS) om snel naar de opdrachtgroep van uw keuze te gaan.Azure CLI-voorbeeldscripts: De index heeft drie tabbladen:
- Lijst op onderwerpgebied: Voorbeelden voor een Azure-service zoeken.
- Lijst per referentiegroep: Voorbeelden zoeken voor een referentieopdrachtgroep.
- Azure CLI-voorbeelden GitHub-opslagplaats: vind voorbeelden in de Azure CLI voorbeelden GitHub-opslagplaats.
Copilot gebruiken
Zowel Azure Portal als Microsoft Edge bieden Copilot-ervaringen die informatie retourneren over Azure CLI-referentieopdrachten , voorbeelden en gepubliceerde artikelen. Copilot biedt ook koppelingen naar gerelateerde Vragen over Stack Overflow . Wanneer u een moeilijke taak hebt met meerdere scriptstappen, is Copilot handig bij het compileren van meerdere informatiebronnen om uw vraag te beantwoorden.
Opmerking
GitHub Copilot kan u ook helpen bij het schrijven van Azure CLI-scripts rechtstreeks in uw code-editor, waardoor intelligente code is voltooid en suggesties worden gedaan.