Azure CLI sorunlarını giderme

Hata kategorileri

Azure CLI tarafından döndürülen hataların çoğu şu kategorilerden birine girer:

Hata kategorisi Genel hata nedeni
Tanınmayan argüman Parametre yanlış yazılmış veya yok.
Gerekli bağımsız değişken eksik Gerekli bir parametre belirtilmedi veya iki "parametre çiftinin" yalnızca biri belirtildi. Bir parametre de yanlış yazılabilir.
Birbirini dışlayan argüman İki veya daha fazla parametre birlikte belirtilemiyor.
Geçersiz bağımsız değişken değeri Parametre değer geçerli değil. Bu hata genellikle alıntılar, kaçış karakterleri veya boşluklardan kaynaklanır.
Hatalı istek 400 http durum kodu bu hatayı döndürür. Eksik bir boşluk, eksik bir parametre tiresi veya gereksiz ya da eksik tek veya çift tırnak işareti olup olmadığını denetleyin. Bu hata, parametre değeri izin verilen bir değer içermediğinde de oluşur.
Kaynağı bulunamadı Parametre değerinde başvurulan bir Azure kaynağı bulunamıyor.
Kimlik doğrulama Microsoft Entra kimlik doğrulaması başarısız oldu.

Debug parametresi

Azure CLI'nın her başvuru komutu için ne yürüttüğüne bakmak için en iyi yollardan biri parametresini --debug kullanmaktır. Hem başarısız hem de başarılı bir komut için örnekleri --debug aşağıda verilmiştir:

# 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

Hata ayıklama çıkışının bir bölümü aşağıdadır. Günlük konumuna ve tanınmayan parametreye dikkat edin.

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
...

Önceki örnekte verilen hata --debug çıkışını başarılı bir yürütmeyle karşılaştırın:

# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug

Hata ayıklama çıkışının bir bölümü aşağıdadır. Günlük konumuna, API çağrısına ve çalışma zamanına dikkat edin.

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)

JSON biçimlendirmesi için --debug örnekleri için bkz. Betik dilleri arasındaki farkları alıntılama - JSON dizeleri.

Yaygın söz dizimi hataları

Azure CLI Bash, PowerShell ve Windows Komut İstemi()cmd.exe içinde çalıştırılabilir ancak betik dilleri arasında söz dizimi farklılıkları vardır. Tek tırnak, çift tırnak ve kaçış karakterleri içeren Azure CLI betikleri, dil ayarları arasında kopyalandığında genellikle değişiklik gerektirir. Bu sınama en çok parametre değerlerinde, özellikle parametreye --query atanan değerlerde ortaya çıkar. Bazı yaygın hata iletileri şunlardır:

  • Hatalı istek... {something} geçersiz: Bu hatanın nedeni boşluk, tek veya çift tırnak işareti veya bir tırnak işaretinin eksikliği olabilir.

  • Beklenmeyen belirteç...: Bu hata, fazladan bir alan veya tırnak işareti olduğunda görülür.

  • Geçersiz jmespath_type değeri: Bu hata genellikle parametresindeki --query yanlış alıntılardan kaynaklanır.

  • Değişken başvurusu geçerli değil: Bu hata, genellikle birleştirme veya eksik bir kaçış karakteri nedeniyle bir dize düzgün biçimlendirilmediğinde oluşur.

  • Tanınmayan bağımsız değişkenler: Bu hata genellikle yanlış satır devamlılığı karakteri veya yanlış yazılmış parametre adından kaynaklanır.

  • Unary operatöründen sonra eksik ifade: Bu hata, bir satır devam karakterinin eksikliği durumunda görülür.

Söz dizimi hatalarını açıklamaya ve çalışma örnekleri sağlamaya ayrılmış birkaç Azure CLI makalesi vardır:

Tavsiye

Bir komut hatasını çözemiyorsanız farklı bir betik dili kullanmayı deneyin. Çoğu Azure CLI belgesi, Bash betik dilini kullanan Azure Cloud Shell'de yazılır ve test edilir. Bash'te yürütülecek bir makale örneği edinebiliyorsanız ancak PowerShell'de yürütülmüyorsa, tek ve çift tırnak ve kaçış karakterleri kullanımınızı gözden geçirin.

Çok faktörlü kimlik doğrulaması (MFA) sorunlarını giderme

Etkileşimli oturum açma hataları

Kaynakları oluşturan, değiştiren veya silen Azure CLI komutlarını çalıştırırken hatalarla karşılaşırsanız, sorunun nedeni çok faktörlü kimlik doğrulaması (MFA) gerektiren bir Microsoft Entra Id Koşullu Erişim ilkesi olabilir.

Bu hatalar genellikle MFA ilke tarafından gerekli olduğunda ancak oturum açma sırasında zorunlu tutulmadığında oluşur.

İlke tarafından kaynağa izin verilmedi

Kullanırken aşağıdaki hatalardan birini görebilirsiniz:

  • Azure CLI sürüm 2.75.0 veya öncesi
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.

Veya:

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.

Veya:

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.

Daha bilgilendirici hata iletileri ve ilke ayrıntıları almak için aşağıdaki sürümlere veya sonraki sürümlere yükseltin:

  • Azure CLI sürüm 2.76.0 veya üzeri

Aşağıdaki hata Azure CLI 2.76.0+'da oluşur; burada MFA, belirli işlemler için Koşullu Erişim tarafından gereklidir.

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.

Çözünürlük seçenekleri

  • Azure yöneticinizden oturum açma sırasında MFA'yı zorunlu kılmasını isteyin. Bu, oturumunuzun ek adımlar olmadan Koşullu Erişim gereksinimlerini karşılamasını sağlar.

  • Oturum açma sırasında MFA zorlaması mümkün değilse, etkileşimli olarak kimlik doğrulaması yapmak için parametresini --claims-challenge kullanın:

    az logout
    az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
    

Daha fazla bilgi için bkz . Azure ve diğer yönetici portalları için zorunlu çok faktörlü kimlik doğrulamasını planlama

win32file içeri aktarılırken DLL yüklemesi başarısız oldu

Azure CLI'yi kullanmaya çalışırken aşağıdaki hatayla karşılaşabilirsiniz:

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>

Bu sorun, bozuk bir yükleme nedeniyle oluşabilir. Sorunu çözmek için:

  1. Azure CLI'yi kaldırın.
  2. Tercih ettiğiniz yükleme yöntemini kullanarak Azure CLI'yi yeniden yükleyin.

Daha fazla bilgi için bkz. GitHub sorunu #32045.

Hata: Geçersiz değer veya yok

Bu hatalar genellikle yanlış biçim içeren değişken değerleri kullanılmaya çalışıldığında oluşur. Azure CLI için varsayılan çıkış JSON'dır. Azure kaynağının kimliğini bir değişkende depolamaya çalışıyorsanız belirtmelisiniz --output tsv. İşte bir örnek:

# 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'.

Şimdi tsv çıkış türünü kullanın.

# 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

Hata: Bağımsız değişkenler bekleniyor veya gerekli

Azure CLI komutunda gerekli bir parametre eksikse veya Azure CLI'nın başvuru komutunu yanlış ayrıştırmasına neden olan bir tipografik hata olduğunda bu hatayı alırsınız. Bir betikle çalışırken, bir veya daha fazla koşul doğru olduğunda da bu hatayı alırsınız:

  • Satır devamlılığı karakteri eksik veya yanlış.
  • PowerShell betik dilinde çalışırken, satır uzatma karakterinin sağ tarafında boşluk karakteri vardır. PowerShell splatting yalnızca dizilerle desteklenir ve Azure CLI komutlarıyla karma tablolarla desteklenmez.
  • Değişken adı, tire (-) gibi özel bir karakter içerir.

Hata: Kaynak bulunamadı

Azure CLI parametre değerinde geçirilen kaynak adını veya kimliği bulamıyorsa, bunun nedeni genellikle şu nedenlerden biridir:

  • Kaynak adı veya kimliği yanlış yazılmış.
  • Kaynak adı özel karakterler içeriyor ve tek veya çift tırnak içine alınmamış.
  • Bir değişkene geçirilen değerin başında veya sonunda görünmeyen boşluklar vardır.
  • Kaynak var, ancak farklı bir abonelikte.

Hata: Dize JSON olarak ayrıştırılamadı

Bash, Linux'taki PowerShell ve Windows'taki PowerShell arasında alıntılama farklılıkları vardır. Ayrıca, PowerShell'in farklı sürümleri farklı sonuçlar üretebilir. JSON dizesi gibi karmaşık parametreler için en iyi yöntem, kabuğun yorumunu atlamak için Azure CLI'nin @<file> kuralını kullanmaktır. Daha fazla bilgi için şu makalelerden birine bakın:

Bash, PowerShell ve cmd.exeiçin JSON söz dizimi örnekleri için bkz. Betik dilleri arasındaki farkları alıntılama - JSON dizeleri öğreticisi .

Hata: InvalidTemplateDeployment

Bu kaynağı sunmayan bir konumda Azure kaynağı oluşturmaya çalıştığınızda şu iletiye benzer bir hata alırsınız: "Kapasite Kısıtlamaları için aşağıdaki SKU'lar başarısız oldu: myDesiredSkuName' şu anda 'mySpecifiedLocation' konumunda kullanılamıyor".

İşte westus konumunda oluşturulamaz bir VM için tam bir hata örneği:

{"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."}]}}

Çözüm, istenen Azure kaynağınızın bir özelliğini değiştirmek veya farklı bir konum denemektir.

Hata: Abonelik bulunamadı

Abonelik adını veya kimliğini yanlış yazmadığınız varsayıldığında, bir kaynak sağlayıcısı etkin aboneliğe kaydedilmediğinde bu hata oluşur. Örneğin, az storage account createyürütmek istiyorsanız Microsoft.Storage sağlayıcısının kaydedilmesi gerekir. Bir kaynak sağlayıcısını kaydetmek için bkz. Azure kaynak sağlayıcıları ve türleri.

Hata: Hatalı el sıkışma sertifikası doğrulaması başarısız oldu

Bu hatayı düzeltme hakkında bilgi için bkz. Ara sunucu arkasında çalışma.

Ara sunucu arkasında çalışmak

Azure CLI'yı otomatik olarak imzalanan sertifikalar kullanan bir ara sunucu üzerinden kullanıyorsanız, Python Azure CLI tarafından kullanılan istek kitaplığı şu hataya neden olabilir: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",). Bu hatayı gidermek için REQUESTS_CA_BUNDLE ortam değişkenini PEM biçiminde CA paket sertifika dosyasının yoluna ayarlayın.

işletim sistemi Varsayılan sertifika yetkilisi paketi
Windows 32 bit C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Windows 64 bit 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 modelleri: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Silikon modelleri: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Ara sunucunun sertifikasını CA paket sertifika dosyasına ekleyin veya içeriği başka bir sertifika dosyasına kopyalayın. Ardından REQUESTS_CA_BUNDLE yeni dosya konumuna ayarlayın. İşte bir örnek:

<Original cacert.pem>

-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----

Bazı proxy'ler kimlik doğrulaması gerektirir. HTTP_PROXY veya HTTPS_PROXY ortam değişkenlerinin biçimi, HTTPS_PROXY="https://username:password@proxy-server:port"gibi kimlik doğrulamasını içermelidir. Ayrıntılar için bkz. Pythoniçin Azure SDK proxy'lerini yapılandırma.

Hizmet sorumluları

Hizmet sorumlularıyla ilgili sorunları giderme hakkında bilgi için Hizmet sorumlularıyla çalışma öğreticisindeki Temizleme ve Sorun Giderme bakın.

Diğer sorunlar

Azure CLI ile ilgili bu makalede listelenmeyen bir ürün sorunuyla karşılaşırsanız GitHub'nde bir sorun oluşturun.

Ayrıca bakınız

  • Azure CLI'yi başarıyla kullanmaya yönelik İpuçları