Tips för att använda Azure CLI

Slutförd

I den här modulen har du lärt dig att välja en miljö, installera Azure CLI, köra Azure CLI-kommandon interaktivt och skapa ett Bash-skript . Vi tar vår utbildning ett steg längre och fokuserar på hur du använder Azure CLI . I den här lektionen får du lära dig hur Azure CLI fungerar bakom kommandoraden och ger dig tips för felsökning.

Tips/Råd

Den här modulen är en avancerad kurs och den här lektionen tar dig djupt in i Azure CLI. Om du inte har använt kommandoradsprogrammering tidigare fokuserar du på begreppen. Informationen blir lättare att förstå när du får erfarenhet. Ge inte upp!

Förstå Azure CLI API-anrop

Bakom kulisserna av Azure-portalens grafiska användargränssnitt och Azure CLI:s kommandorad sker API-anrop. Du kan exponera Azure CLI:sAPI-anrop med hjälp av parametern --debug . Det här händer när du skapar en ny resursgrupp:

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

Här är terminalutdata från Azure Cloud Shell med vissa rader utelämnade för korthet. Observera följande viktiga utdata:

  • Kommandoargument: Det är skriptspråket, inte Azure CLI, som parsar kommandoargument (parametrar). Den här utdataegenskapen är den första platsen att titta på när ett kommando resulterar i ett fel.
  • azlogging: Den här sökvägen är där loggfilen lagras.
  • Begärandehuvuden: Dessa rubriker är de parametervärden som skickas av PUT-kommandot .
  • Svarsinnehåll: Det här utdata är det som returneras till konsolen utan fullständiga --debug utdata.
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
...

Viktiga insikter från felsökningsutdata

  • Kommandoparsing:Skriptspråket (inte Azure CLI) parsar argument. Titta här först när du felsöker.
  • Loggfilsplats: Hitta detaljerade loggar på sökvägen som visas i azlogging för efteranalys.
  • API-information: Se det faktiska REST API-anropet som görs, inklusive HTTP-metoden (PUT, GETosv.).
  • Slutkod: Ett värde för 0 indikerar lyckat resultat. Värden som inte är noll anger fel.

Vissa Azure CLI-kommandon utför flera åtgärder. Använd --debug för att se varje kommando som Körs i Azure CLI . Ännu mer användbart är att använda --debug för att felsöka varför ett Azure CLI-skript ger oväntade resultat.

Felsökning med --debug

Hur många gånger som utvecklare har du tänkt: "Den här uppgiften ska vara så enkel! Varför fungerar inte mitt skript?" När du får oväntade resultat från Azure CLI-kommandon är parametern --debug din vän! Nu ska vi gå igenom ett exempel på ett företag med 100 Azure-lagringskonton. Du måste hitta de konton där offentlig blobåtkomst är aktiverad.

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

När ett parametervärde inte är korrekt formaterat för skriptspråket som parsar värdet får du ett invalid jmespath_type value fel:

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'

Titta på variabelvärdet som Bash skickar för allowBlobPublicAccess. I själva verket, var är värdet? Varför saknas den?

Kom ihåg att det är miljön (kallas även "skriptspråk") som parsar Azure CLI-variabelvärden . Varje skriptspråk , och även versioner av samma skriptspråk, kan ge olika resultat. Här är rätt sätt att skicka ett booleskt parametervärde i 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"
]

Tips/Råd

Den viktigaste skillnaden är att komma ifrån backticks med \true' så Bash tolkar dem inte som kommandoersättning.

Förstå det viktiga begreppet --debug, och du är på väg att använda Azure CLI i valfri miljö.

Skillnader i skriptspråksyntax

När vi precis har pratat klart om --debugär nästa steg att vara medveten om vad som orsakar de flesta skriptfel. Ett skript som skrivits i Bash måste ändras för att köras korrekt i PowerShell eller cmd.exe om skriptet innehåller någon av dessa konstruktioner:

  • Radfortsättningstecken
  • Variabler
  • Slumpmässiga identifierare
  • Offerter
  • Programmeringsspråkkonstruktioner

Här följer några exempel:

Syntax Våldsamt slag PowerShell cmd.exe
Radfortsättningstecken Omvänt snedstreck (\) Backtick (`) Caret (^)
Variabelnamngivning variableName=varValue $variableName="varValue" set variableName=varValue
Tal som sträng \50'' `50` `50`
Booleskt värde som sträng \sann `false` 'true'
Slumpmässigt 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
Skriva till konsolen echo Write-Host (rekommenderas) eller echo echo

Vanliga problem

Den här exempeltabellen är inte allomfattande. Det som är viktigt att förstå när du får ett Azure CLI-fel är att först tänka på att det kan finnas ett syntaxproblem för din miljö. Testa den här möjligheten genom att kopiera och klistra in skriptet till ett annat skriptspråk, till exempel Azure Cloud Shell. Använd --debug i båda miljöerna och notera skillnaderna i command arguments egenskapen för utdata.

Viktigt!

När du kopierar kodblock från Microsoft-artiklar bör du tänka på att de flesta Azure CLI-dokumentationerMicrosoft är skrivna för Bash och testas i Azure Cloud Shell.

Fler sätt att få hjälp

Använd az find

Ta en snabb genomgång av Azure CLI-kommandon genom att följa dessa exempel:

Hitta de mest populära kommandona som är relaterade till ordet blob:

az find blob

Visa de mest populära kommandona för en Azure CLI-kommandogrupp , till exempel az storage:

az find "az storage"

Visa de mest populära parametrarna och underkommandona för ett Azure CLI-kommando :

az find "az storage account create"

Använd --help

Om du redan känner till namnet på det kommando du vill använda får --help du mer detaljerad information om kommandot och en lista över tillgängliga underkommandon för en kommandogrupp. Om du fortsätter med våra Azure Storage-exempel kan du få en lista över undergrupper och kommandon för att hantera ett lagringskontos blobtjänst:

az storage account blob-service-properties --help

Tips/Råd

Använd --help med valfritt kommando eller underkommando för att få detaljerad användningsinformation utan att lämna terminalen.

A till Z-dokumentationsindex

Om du vill hitta exempel på Azure CLI-referenskommandon använder du ett av flera A-till Z-index:

  • Referensindex: Innehåller en A till Z-lista över alla referensgrupper. Expandera det vänstra navigeringsfältet för undergrupper.

  • Konceptuell artikellista för Azure CLI: Innehåller en A till Z-lista med snabbstarter, instruktionsguider, självstudier och lär dig moduler som förklarar hur du använder Azure CLI-referenskommandon i verkliga scenarier. I artikellistan grupperas artiklar efter Azure CLI-kommandogrupp , till exempel az account, och så az acrvidare. Använd Ctrl+F i Windows (Cmd+F i macOS) för att snabbt hoppa till den kommandogrupp du väljer.

  • Azure CLI-exempelskript: Indexet har tre flikar:

Använda Copilot

Både Azure-portalen och Microsoft Edge erbjuder Copilot-upplevelser som returnerar information om Azure CLI-referenskommandon , exempel och publicerade artiklar. Copilot innehåller också länkar till relaterade Stack Overflow-frågor . När du har ett svårt jobb att göra med flera skriptsteg är Copilot användbart när du kompilerar flera informationskällor för att besvara din fråga.

Anmärkning

GitHub Copilot kan också hjälpa dig att skriva Azure CLI-skript direkt i kodredigeraren, vilket ger intelligent kodkomplettering och förslag.