Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Foutcategorieën
De meeste fouten die door de Azure CLI worden geretourneerd, vallen in een van de volgende categorieën:
| Foutcategorie | Algemene foutoorzaak |
|---|---|
| Niet-herkend argument | Een parameter is onjuist gespeld of bestaat niet. |
| Vereist argument ontbreekt | Er is geen vereiste parameter opgegeven of er wordt slechts één van twee 'parameterparen' opgegeven. Een parameter kan ook onjuist zijn gespeld. |
| Argument dat elkaar uitsluit | Twee of meer parameters kunnen niet samen worden opgegeven. |
| ongeldige argumentwaarde | De waarde van parameter |
| Foute aanvraag | Deze fout wordt geretourneerd door een HTTP-statuscode van 400. Controleer op een ontbrekende spatie, een ontbrekende parameterstreep of op extra of ontbrekende enkele of dubbele aanhalingstekens. Deze fout treedt ook op wanneer een parameterwaarde geen toegestane waarde bevat. |
| Resource niet gevonden | Er kan geen Azure-resource worden gevonden waarnaar wordt verwezen in een parameterwaarde. |
| Authenticatie | Microsoft Entra-verificatie is mislukt. |
De parameter voor foutopsporing
Een van de beste manieren om te zien wat de Azure CLI uitvoert voor elke referentieopdracht is het gebruik van de --debug parameter. Hier volgen voorbeelden van --debug voor een mislukte en geslaagde opdracht:
# Error example: Create a resource group, but omit the quotes around the resource group name.
az group create --location eastus2 --name msdocs-rg-test --debug
Hier volgt een deel van de uitvoer voor foutopsporing. Let op de locatie van het logboek en het niet-herkende argument.
cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-name', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.azclierror: unrecognized arguments: msdocs-rg-test
...
Vergelijk de foutuitvoer --debug in het vorige voorbeeld met een geslaagde uitvoering:
# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug
Hier volgt een deel van de uitvoer voor foutopsporing. Let op de locatie van het logboek, de API-aanroep en de uitvoeringstijd.
cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-n', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/msdocs-rg-test?api-version=YYYY-MM-DD'
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': 'ba7ee6f4-2dcc-11ef-81ce-00155dadc5c8'
cli.azure.cli.core.sdk.policies: 'CommandName': 'group create'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '-l -n --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.61.0 (RPM) azsdk-python-core/1.28.0 Python/3.9.19 (Linux-5.10.102.2-microsoft-standard-x86_64-with-glibc2.35) cloud-shell/1.0'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: {"location": "eastus2"}
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "PUT /subscriptions/3618afcd-ea52-4ceb-bb46-53bb962d4e0b/resourcegroups/msdocs-rg-test?api-version=2022-09-01 HTTP/1.1" 201 226
cli.azure.cli.core.sdk.policies: Response status: 201
...
cli.azure.cli.core.sdk.policies: 'Date': 'Tue, 18 Jun 2024 23:44:41 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-rg-test","name":"msdocs-rg-test","type":"Microsoft.Resources/resourceGroups","location":"eastus2","properties":{"provisioningState":"Succeeded"}}
...
cli.__main__: Command ran in 1.829 seconds (init: 0.111, invoke: 1.718)
Voor voorbeelden van --debug voor JSON-opmaak, zie Verschillen tussen scripttalen - JSON-tekenreeksen.
Veelvoorkomende syntaxisfouten
Hoewel de Azure CLI kan worden uitgevoerd in Bash, PowerShell en de Windows-opdrachtprompt (cmd.exe), zijn er syntaxisverschillen tussen scripttalen. Voor Azure CLI-scripts met enkele aanhalingstekens, dubbele aanhalingstekens en escapetekens is vaak een wijziging vereist bij het kopiëren tussen talen. Deze uitdaging wordt meestal weergegeven in parameterwaarden, met name in parameters die zijn toegewezen aan de --query parameter. Hier volgen enkele veelvoorkomende foutberichten:
Ongeldige aanvraag ... {iets} is ongeldig: deze fout kan worden veroorzaakt door een spatie, een enkel of dubbel aanhalingsteken of een gebrek aan een aanhalingsteken.
Onverwacht token...: deze fout wordt weergegeven wanneer er een extra spatie of aanhalingsteken is.
Ongeldige jmespath_type waarde: deze fout komt vaak van een onjuist quoteren in de
--queryparameter.Variabelereferentie is ongeldig: deze fout wordt ontvangen wanneer een tekenreeks niet goed is opgemaakt, vaak vanwege samenvoeging of een ontbrekend escape-teken.
Niet-herkende argumenten: deze fout wordt vaak veroorzaakt door een onjuist regelvervolgteken of een verkeerd gespelde parameternaam.
Ontbrekende expressie na unaire operator: deze fout wordt weergegeven wanneer een regelvervolgteken ontbreekt.
Er zijn verschillende Azure CLI-artikelen die zijn gewijd aan het uitleggen van syntaxisfouten en het bieden van werkvoorbeelden:
- Het citeren van verschillen tussen scripttalen
- verschillen in de syntaxis van Bash, PowerShell en Cmd tutorial
- Vind veel
--queryparametervoorbeelden in Instructies om query's uit te voeren op Azure CLI-opdrachtuitvoer met behulp van een JMESPath-query - De Azure CLI gebruiken in een Bash-scripttaal
- Overwegingen voor het uitvoeren van de Azure CLI in een PowerShell-scripttaal
Aanbeveling
Als u een opdrachtfout niet kunt oplossen, kunt u een andere scripttaal gebruiken. De meeste Azure CLI-documentatie is geschreven en getest in Azure Cloud Shell, die gebruikmaakt van de Bash-scripttaal. Als u een voorbeeld van een artikel kunt krijgen dat moet worden uitgevoerd in Bash, maar niet wordt uitgevoerd in PowerShell, controleert u het gebruik van enkele en dubbele aanhalingstekens en escapetekens.
Problemen met meervoudige verificatie (MFA) oplossen
Interactieve aanmeldingsfouten
Als er fouten optreden bij het uitvoeren van Azure CLI-opdrachten voor het maken, wijzigen of verwijderen van resources, kan het probleem worden veroorzaakt door een Beleid voor voorwaardelijke toegang van Microsoft Entra ID waarvoor meervoudige verificatie (MFA) is vereist.
Deze fouten treden meestal op wanneer MFA vereist is voor beleid, maar niet wordt afgedwongen tijdens het aanmelden.
De resource is door beleid niet toegestaan.
Mogelijk ziet u een van de volgende fouten bij het gebruik van:
- Azure CLI versie 2.75.0 of eerder
Due to a configuration change made by your administrator, or because you moved to a new location,
you must enroll in multi-factor authentication. Interactive authentication is needed.
Of:
Resource was disallowed by policy. Reasons: MFA is required. See error details for policy resource
IDs. RequestDisallowedByPolicy Message: Resource policy resource IDs was disallowed by policy.
Reasons: MFA is required.
Of:
Unauthorized. RequestDisallowedByPolicy. Resource was disallowed by policy. Reasons: MFA is
required. See error details for policy resource IDs. MFA is required. Users must authenticate with
multi-factor authentication to create or update resources.
Voer een upgrade uit naar de volgende versies of hoger om meer informatieve foutberichten en beleidsdetails te ontvangen:
- Azure CLI versie 2.76.0 of hoger
De volgende fout treedt op in Azure CLI 2.76.0+, waarbij MFA is vereist voor voorwaardelijke toegang voor specifieke bewerkingen.
Run the command below to authenticate interactively; additional arguments may be added as needed:
az logout
az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
(RequestDisallowedByPolicy) Resource was disallowed by policy. Policy identifiers. Users must use
MFA for Create/Update operations. Users must authenticate with multi-factor authentication to create
or update resources. Users must use MFA for Create operation. Users must authenticate with
multi-factor authentication to create or update resources. Users must use MFA for Create/Update
operations. Users must authenticate with multi-factor authentication to create or update resources.
Users must use MFA for Create operation. Users must authenticate with multi-factor authentication to
create or update resources.
Resolutieopties
Vraag uw Azure-beheerder om MFA af te dwingen bij het aanmelden. Hierdoor kan uw sessie voldoen aan de vereisten voor voorwaardelijke toegang zonder extra stappen.
Als MFA afdwingen bij aanmelden niet mogelijk is, gebruikt u de
--claims-challengeparameter om interactief te verifiëren:az logout az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
Zie Planning voor verplichte meervoudige verificatie voor Azure en andere beheerportals voor meer informatie
DLL-laden is mislukt tijdens het importeren van win32file
Mogelijk treedt de volgende fout op bij het gebruik van de Azure CLI:
DLL load failed while importing win32file: The specified module could not be found.
The command failed with an unexpected error. Here is the traceback:
DLL load failed while importing win32file: The specified module could not be found.
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/__main__.py", line 13, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/telemetry.py", line 19, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/telemetry/__init__.py", line 9, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/__init__.py", line 4, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/portalocker.py", line 11, in <module>
ImportError: DLL load failed while importing win32file: The specified module could not be found.
PS C:\Users\dsevilla>
Dit probleem kan optreden vanwege een beschadigde installatie. Ga als volgt te werk om het probleem op te lossen:
- Verwijder de Azure CLI.
- Installeer de Azure CLI opnieuw met behulp van de installatiemethode van uw voorkeur.
Zie GitHub-probleem 32045 voor meer informatie.
Fout: ongeldige waarde of bestaat niet
Deze fouten treden vaak op bij het gebruik van variabele waarden die een onjuiste indeling bevatten. De standaarduitvoer voor Azure CLI is JSON. Als u een id voor een Azure-resource in een variabele probeert op te slaan, moet u opgeven --output tsv. Hier is een voorbeeld:
# Get a subscription that contains a name or phrase
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id")
echo $subscriptionID
# output as JSON
[ "00000000-0000-0000-0000-000000000000" ]
# Try to set your subscription to the new ID
az account set --subscription $subscriptionID
# error output
The subscription of '"00000000-0000-0000-0000-000000000000"' doesn't exist in cloud 'AzureCloud'.
Gebruik nu het tsv uitvoertype.
# Get the active subscription
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id" --output tsv)
echo $subscriptionID
# output as TSV
00000000-0000-0000-0000-000000000000
# Successfully set your subscription to the new ID
az account set --subscription $subscriptionID
Fout: argumenten worden verwacht of vereist
Deze fout wordt weergegeven wanneer een Azure CLI-opdracht een vereiste parameter mist of als er een typografische fout optreedt waardoor de Azure CLI de verwijzingsopdracht onjuist parseert. Wanneer u met een script werkt, wordt deze fout ook weergegeven wanneer aan een of meer voorwaarden wordt voldaan:
- Een regelvervolgteken ontbreekt of is onjuist.
- Aan de rechterkant van een regelvervolgteken bevindt zich een spatie wanneer u in de scripttaal van PowerShell werkt. PowerShell-splatting wordt alleen ondersteund met arrays en niet met hashtabellen bij Azure CLI-opdrachten.
- Een variabelenaam bevat een speciaal teken, zoals een streepje (-).
Fout: bron niet gevonden
Wanneer de Azure CLI de resourcenaam of id die is doorgegeven in een parameterwaarde niet kan vinden, is dit meestal een van de volgende redenen:
- De resourcenaam of -id is onjuist gespeld.
- De resourcenaam bevat speciale tekens en wordt niet omgeven door enkele of dubbele aanhalingstekens.
- De waarde die wordt doorgegeven aan een variabele, heeft ongelezen voorloop- of volgspaties.
- De resource bestaat, maar bevindt zich in een ander abonnement.
Fout: Kan tekenreeks niet parseren als JSON
Er zijn verschillen in aanhalingstekens tussen Bash, PowerShell in Linux en PowerShell in Windows.
Bovendien kunnen verschillende versies van PowerShell verschillende resultaten opleveren. Voor complexe parameters, zoals een JSON-tekenreeks, kunt u het beste de conventie van @<file> Azure CLI gebruiken om de interpretatie van de shell te omzeilen. Zie een van de volgende artikelen voor meer informatie:
Zie, voor voorbeelden van JSON-syntaxis voor Bash, PowerShell en cmd.exe, de handleiding voor "Aanhalingstekensverschillen tussen scripttalen - JSON-tekenreeksen".
Fout: InvalidTemplateDeployment
Wanneer u probeert een Azure-resource te maken op een locatie die deze resource niet aanbiedt, krijgt u een foutbericht dat lijkt op dit bericht: 'De volgende SKU's zijn mislukt voor capaciteitsbeperkingen: myDesiredSkuName' is momenteel niet beschikbaar op locatie 'mySpecifiedLocation'.
Hier volgt een volledig voorbeeld van een fout voor een VIRTUELE machine die niet kan worden gemaakt op de westus locatie:
{"error":{"code":"InvalidTemplateDeployment","message":"The template deployment 'vm_deploy_<32 character ID>'
is not valid according to the validation procedure. The tracking id is '<36 character ID>'.
See inner errors for details.","details":[{"code":"SkuNotAvailable","message":"The requested VM size for resource
'Following SKUs have failed for Capacity Restrictions: Standard_DS1_v2' is currently not available
in location 'westus'. Please try another size or deploy to a different location
or different zone. See https://aka.ms/azureskunotavailable for details."}]}}
De oplossing is om een eigenschap van uw aangevraagde Azure-resource te wijzigen of een andere locatie te proberen.
Fout: Abonnement niet gevonden
Ervan uitgaande dat u de abonnementsnaam of id niet onjuist hebt getypt, treedt deze fout op wanneer een resourceprovider niet is geregistreerd in het actieve abonnement. Als u bijvoorbeeld az storage account createwilt uitvoeren, moet de Microsoft.Storage provider zijn geregistreerd. Zie Azure-resourceproviders en -typenom een resourceprovider te registreren.
Fout: Mislukt handdrukcertificaatverificatie
Zie Werken achter een proxy voor informatie over het oplossen van deze fout.
Werken achter een proxy
Als u Azure CLI gebruikt via een proxyserver die zelfondertekende certificaten gebruikt, kan de Python-requests bibliotheek die door Azure CLI wordt gebruikt de volgende fout veroorzaken: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",).
Als u deze fout wilt oplossen, stelt u de omgevingsvariabele REQUESTS_CA_BUNDLE in op het pad van het CA-bundelcertificaatbestand in PEM-indeling.
| besturingssysteem | Standaardpakket van certificeringsautoriteit |
|---|---|
| Windows 32-bit | C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
| Windows 64-bits | C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
| Ubuntu/Debian Linux | /opt/az/lib/python<version>/site-packages/certifi/cacert.pem |
| CentOS Stream/RHEL/SUSE Linux | /usr/lib64/az/lib/python<version>/site-packages/certifi/cacert.pem |
| macOS | Intel-modellen: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem Siliciummodellen: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem |
Voeg het certificaat van de proxyserver toe aan het CA-bundelcertificaatbestand of kopieer de inhoud naar een ander certificaatbestand. Stel vervolgens REQUESTS_CA_BUNDLE in op de nieuwe bestandslocatie. Hier is een voorbeeld:
<Original cacert.pem>
-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----
Voor sommige proxy's is verificatie vereist. De indeling van de HTTP_PROXY of HTTPS_PROXY omgevingsvariabelen moet de verificatie bevatten, zoals HTTPS_PROXY="https://username:password@proxy-server:port". Zie Proxy's configureren voor de Azure SDK voor Pythonvoor meer informatie.
Serviceprincpalen
Zie Opschonen en probleemoplossing in de zelfstudie Werken met service-principals voor meer informatie over het oplossen van problemen met service-principals.
Andere problemen
Als u een productprobleem ondervindt met Azure CLI die niet wordt vermeld in dit artikel, een probleem melden op GitHub.