Udostępnij przez


Rozwiązywanie problemów z modułem Az programu PowerShell

Włącz logowanie debugowania

Jednym z pierwszych kroków, które należy wykonać w rozwiązaniu problemu z modułem Az programu PowerShell, jest włączenie rejestrowania debugowania.

Aby włączyć rejestrowanie debugowania dla poszczególnych poleceń, określ parametr Debug .

Get-AzResource -Name 'DoesNotExist' -Debug

Aby włączyć rejestrowanie debugowania dla całej sesji programu PowerShell, należy ustawić wartość zmiennej DebugPreference na Continue.

$DebugPreference = 'Continue'

Znany problem: Instalowanie modułów Az z mar kończy się niepowodzeniem

Podczas instalowania niektórych modułów az programu PowerShell z rejestru Artefaktów Microsoft (MAR) przy użyciu modułu PSResourceGet może wystąpić błąd, taki jak:

Install-PSResource: Package(s) 'Az.Keyvault' could not be installed from repository 'MAR'.

Uwaga / Notatka

Aby obejść ten problem, zainstaluj moduł z innego repozytorium, takiego jak galeria programu PowerShell, aż problem zostanie rozwiązany.

Aby uzyskać więcej informacji, zobacz Bugfix for porównywania nazwy ścieżki pliku w celu określenia dokładnego dopasowania.

Rozwiązywanie problemów z uwierzytelnianiem wieloskładnikowych (MFA)

Błędy logowania interakcyjnego

Jeśli wystąpią błędy podczas uruchamiania poleceń cmdlet programu Azure PowerShell, które tworzą, modyfikują lub usuwają zasoby, problem może być spowodowany przez zasady dostępu warunkowego identyfikatora Entra firmy Microsoft, które wymagają uwierzytelniania wieloskładnikowego (MFA).

Te błędy zwykle występują, gdy uwierzytelnianie wieloskładnikowe jest wymagane przez zasady, ale nie jest wymuszane podczas logowania.

SharedTokenCacheUtwórz uwierzytelnianie niedostępne

Ten błąd może wystąpić podczas korzystania z:

  • Az Moduł programu PowerShell w wersji 14.2.0 lub starszej
  • Moduł Az.Accounts programu PowerShell w wersji 5.1.1 lub starszej
SharedTokenCacheCredential authentication unavailable. Token acquisition failed for user
someone@contoso.com. Ensure that you have authenticated with a developer tool that supports Azure
single sign on.

Uaktualnij do następujących wersji lub nowszych, aby otrzymywać bardziej informacyjne komunikaty o błędach i szczegóły zasad:

  • Az Moduł programu PowerShell: wersja 14.3.0 lub nowsza
  • Moduł Az.Accounts : wersja 5.2.0 lub nowsza

Zasób został niedozwolony przez zasady

Ten błąd występuje w nowszych wersjach modułów (Az 14.3.0+ i Az.Accounts 5.2.0 +), gdzie uwierzytelnianie wieloskładnikowe jest wymagane przez dostęp warunkowy dla określonych operacji.

Resource was disallowed by policy. Users must use MFA for Create operation.
Users must authenticate with multi-factor authentication to create or update resources.
Run the cmdlet below to authenticate interactively; additional parameters may be added as needed.
Connect-AzAccount -Tenant (Get-AzContext).Tenant.Id -ClaimsChallenge "<claims-challenge-token>"

Opcje rozwiązywania

  • Poproś administratora platformy Azure o wymuszenie uwierzytelniania wieloskładnikowego podczas logowania. Dzięki temu sesja może spełniać wymagania dostępu warunkowego bez dodatkowych kroków.

  • Jeśli wymuszanie uwierzytelniania wieloskładnikowego podczas logowania nie jest możliwe, użyj parametru ClaimsChallenge , aby uwierzytelnić się interaktywnie:

    Connect-AzAccount -Tenant (Get-AzContext).Tenant.Id -ClaimsChallenge "<claims-challenge-token>"
    

Aby uzyskać więcej informacji, zobacz Planowanie obowiązkowego uwierzytelniania wieloskładnikowego dla platformy Azure i innych portali administracyjnych

Błąd ROPC: z powodu zmiany konfiguracji wprowadzonej przez administratora

Logując się do Azure przy użyciu hasła, używasz przepływu poświadczeń hasła właściciela zasobu (ROPC). Ta metoda uwierzytelniania nie obsługuje uwierzytelniania wieloskładnikowego. Oto przykład:

Connect-AzAccount -Credential $Credential

Jeśli konto użytkownika wymaga uwierzytelniania wieloskładnikowego, polecenie kończy się niepowodzeniem z następującym błędem:

Connect-AzAccount : UsernamePasswordCredential authentication failed: Response status code does not
indicate success: 400 (BadRequest). See the troubleshooting guide for more information
https://aka.ms/azsdk/net/identity/usernamepasswordcredential/troubleshoot

Rozwiązanie: Użyj metody uwierzytelniania zgodnej z usługą MFA.

Ostrzeżenie między tenantami: Uwierzytelnianie nie powiodło się przeciwko tenantowi

Jeśli masz dostęp do kilku dzierżaw, a jedna z nich wymaga uwierzytelniania wieloskładnikowego, program Azure PowerShell może wyświetlić następujące ostrzeżenie:

WARNING: Unable to acquire token for tenant '00000000-0000-0000-0000-000000000000' with error
'Authentication failed against tenant 00000000-0000-0000-0000-000000000000. User interaction is
required. This may be due to the conditional access policy settings such as multi-factor
authentication (MFA). If you need to access subscriptions in that tenant, please rerun
'Connect-AzAccount' with additional parameter '-TenantId 00000000-0000-0000-0000-000000000000.'

Program Azure PowerShell próbuje zalogować się przy użyciu pierwszej napotkanej dzierżawy podczas logowania. Jeśli ten tenant wymaga uwierzytelniania wieloskładnikowego, uwierzytelnianie może zakończyć się niepowodzeniem. Aby uniknąć tego problemu, jawnie określ dzierżawcę docelowego przy użyciu parametru TenantId:

Connect-AzAccount -TenantId 00000000-0000-0000-0000-000000000000

Gwarantuje to, że uwierzytelnianie jest realizowane dla właściwej dzierżawy, co zmniejsza prawdopodobieństwo błędów związanych z uwierzytelnianiem wieloskładnikowym.

Komunikaty ogłoszeniowe w scenariuszach automatyzacji

Podczas nawiązywania połączenia z platformą Azure przy użyciu programu Azure PowerShell komunikaty anonsów są wyświetlane przy użyciu strumienia informacji programu PowerShell, aby uniemożliwić im zmianę zwracanych danych wyjściowych opartych na obiektach. Mimo że podjęliśmy wszelkie wysiłki, aby upewnić się, że komunikaty nie wpływają na Twoje doświadczenie użytkownika, istnieją pewne scenariusze automatyzacji, w których mogą mieć wpływ na korzystanie. Jeśli wystąpią problemy, zalecamy tłumienie strumienia informacji w tych scenariuszach:

Connect-AzAccount -Subscription '<subscription name or id>' -InformationAction Ignore

Menedżer kont sieci Web (WAM)

  • Metoda logowania interakcyjnego nie może otworzyć okna dla WAM i zwraca błąd: Użytkownik anulował uwierzytelnianie.
  • Polecenia cmdlet programu Azure PowerShell nie mogą być uruchamiane po zalogowaniu się przy użyciu nazwy użytkownika i hasła lub kodu urządzenia.
  • Okno wyskakujące WAM nie wyświetla opcji Konto służbowe i szkolne.
  • Metoda logowania interakcyjnego nie może otworzyć okna WAM w konsoli środowiska Windows PowerShell ISE.

Obejściem tych problemów jest wyłączenie WAM:

Update-AzConfig -EnableLoginByWam $false
  • Okno wyskakujące WAM do wyboru konta nie jest łatwe do znalezienia. Zminimalizuj inne okna, aby zlokalizować wyskakujące okno.

Instalacja

Ta sekcja zawiera listę rozwiązań typowych problemów podczas instalowania modułu Az programu PowerShell.

Współistnienie Az i AzureRM

Ostrzeżenie

Nie obsługujemy równocześnie zainstalowanych modułów AzureRM i Az PowerShell w programie Windows PowerShell 5.1.

W scenariuszu, w którym należy zainstalować zarówno moduł AzureRM, jak i moduł Az programu PowerShell w tym samym systemie Windows:

  • Moduł AzureRM musi być zainstalowany tylko w zakresie użytkownika obecnie zalogowanego w programie Windows PowerShell 5.1.
  • Zainstaluj moduł Az programu PowerShell w programie PowerShell w wersji 7.2 lub nowszej.

Ostrzeżenie

Moduł AzureRM PowerShell został oficjalnie uznany za przestarzały z dniem 29 lutego 2024 r. Zaleca się migrowanie użytkowników z modułu AzureRM do modułu Az programu PowerShell w celu zapewnienia ciągłej obsługi i aktualizacji.

Mimo że moduł AzureRM może nadal działać, nie jest już utrzymywany ani obsługiwany, co oznacza, że wszelkie dalsze użytkowanie odbywa się na własną odpowiedzialność i ryzyko użytkownika. Zapoznaj się z naszymi zasobami migracji, aby uzyskać wskazówki dotyczące przejścia do modułu Az.

Visual Studio

Starsze wersje programu Visual Studio mogą instalować program Azure PowerShell w ramach obciążenia programistycznego platformy Azure, który instaluje moduł AzureRM. Program Azure PowerShell można usunąć przy użyciu instalatora programu Visual Studio lub użyć polecenia "Odinstaluj" w obszarze Aplikacje i funkcje. Jeśli masz już zainstalowany program PowerShell 7.x, może być konieczne ręczne zainstalowanie modułu Az programu PowerShell.

Serwer proxy blokuje połączenie

Jeśli otrzymasz błędy zgłaszające, że Galeria PowerShell jest nieosiągalna z Install-Module, być może znajdujesz się za serwerem proxy. Różne systemy operacyjne i środowisko sieciowe mają różne wymagania dotyczące konfigurowania serwera proxy dla całego systemu. Skontaktuj się z administratorem systemu w celu uzyskania informacji o ustawieniach serwera proxy oraz sposobie konfigurowania ich dla Twojego środowiska.

Sam program PowerShell może nie być skonfigurowany do automatycznego używania tego serwera proxy. Za pomocą programu PowerShell 5.1 lub nowszego skonfiguruj sesję programu PowerShell do użycia serwera proxy, wydając następujące polecenia:

$webClient = New-Object -TypeName System.Net.WebClient
$webClient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

Jeśli poświadczenia systemu operacyjnego są poprawnie skonfigurowane, ta konfiguracja kieruje żądania programu PowerShell za pośrednictwem serwera proxy. Aby to ustawienie utrzymywało się między sesjami, dodaj te polecenia do profilu programu PowerShell.

Aby zainstalować pakiet, serwer proxy musi zezwolić na połączenia HTTPS z www.powershellgallery.com.

Odwołanie do obiektu nie jest ustawione na instancję obiektu

Komunikat "referencja do obiektu nie jest przypisana do instancji obiektu" oznacza, że odwołujesz się do obiektu mającego wartość null lub do zasobu Azure, który nie istnieje albo do którego nie masz uprawnień dostępu.

$resourceId =  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<resource-group-name>/providers/Microsoft.Web/sites/<webapp-name>/privateEndpointConnections/<endpoint-name>'
Get-AzPrivateEndpointConnection -ResourceId $resourceId
Get-AzPrivateEndpointConnection: Object reference not set to an instance of an object.

Aby sprawdzić, czy określony zasób platformy Azure istnieje, możesz użyć polecenia cmdlet Get-AzResource.

Get-AzResource -ResourceId $resourceId

Problemy z uprawnieniami poleceń cmdlet AzAD

Moduł Az programu PowerShell używa interfejsu API programu Microsoft Graph. Administrowanie zasobami na platformie Azure za pomocą modułu Az programu PowerShell lub zarządzanie nimi wymaga tych samych uprawnień co wykonywanie identycznego zadania z witryny Azure Portal lub dowolnego innego narzędzia wiersza polecenia platformy Azure. Aby uzyskać szczegółowe pytania dotyczące uprawnień, zobacz dokumentacja uprawnień programu Microsoft Graph.

Parametry zapytania programu Microsoft Graph

Polecenia cmdlet AzAd w obszarze Az.Resources teraz obsługują parametry zapytania i parametry zapytań wyszukiwania. Aby uzyskać szczegółowe informacje na temat składni, zobacz wcześniej przywołyne linki.

Get-AzAdGroupMember nie zwraca zasad dostępu do usługi

W związku z ograniczeniami obecnego interfejsu API Graph, zasady usługi nie są zwracane przez polecenie Get-AzAdGroupMember w module Az 7.x. Aby obejść ten problem, można użyć metody Invoke-AzRestMethod z wersją beta interfejsu API programu Microsoft Graph.

Poniższy przykład wymaga modułu Az PowerShell. Zastąp myGroupName w pierwszym wierszu nazwą grupy.

$Group = Get-AzADGroup -DisplayName myGroupName
((Invoke-AzRestMethod -Uri "https://graph.microsoft.com/beta/groups/$($Group.id)/members").Content |
  ConvertFrom-Json).value |
  Select-Object -Property DisplayName, Id, @{label='OdataType';expression={$_.'@odata.type'}}

Znaleziono polecenie, ale nie można go załadować

Podczas próby uruchomienia dowolnej komendy Az PowerShell, zostanie zwrócony następujący komunikat przez PowerShell.

Connect-AzAccount: The 'Connect-AzAccount' command was found in the module 'Az.Accounts', but the module could not be loaded. For more information, run 'Import-Module Az.Accounts'.

Ten komunikat występuje, gdy moduły Az i AzureRM PowerShell są zainstalowane w tym samym systemie windows i istnieją w $env:PSModulePath dla tej samej wersji programu PowerShell.

Ważne

Po zainstalowaniu modułu AzureRM w zakresie AllUsers programu Windows PowerShell, jest on umiejscowiony w lokalizacji będącej częścią $env:PSModulePath dla programu PowerShell 7. Nie jest to obsługiwane z powodu konfliktów między modułami AzureRM i Az PowerShell.

Zarówno moduł Az, jak i Moduł AzureRM mogą współistnieć w tym samym systemie Windows, ale tylko wtedy, gdy moduł AzureRM jest zainstalowany w zakresie CurrentUser środowiska Windows PowerShell i modułu Az zainstalowanego w programie PowerShell 7. Aby uzyskać więcej informacji, zobacz Instalowanie modułu Az programu PowerShell.

Ostrzeżenie

Moduł AzureRM PowerShell został oficjalnie uznany za przestarzały z dniem 29 lutego 2024 r. Zaleca się migrowanie użytkowników z modułu AzureRM do modułu Az programu PowerShell w celu zapewnienia ciągłej obsługi i aktualizacji.

Mimo że moduł AzureRM może nadal działać, nie jest już utrzymywany ani obsługiwany, co oznacza, że wszelkie dalsze użytkowanie odbywa się na własną odpowiedzialność i ryzyko użytkownika. Zapoznaj się z naszymi zasobami migracji, aby uzyskać wskazówki dotyczące przejścia do modułu Az.

W systemie MacOS błąd jest zwracany, gdy autoryzacja łańcucha kluczy kończy się niepowodzeniem

Podczas uruchamiania programu Azure PowerShell w systemie MacOS może wystąpić komunikat o błędzie podczas próby zalogowania się do konta platformy Azure z sesji programu PowerShell.

DeviceCodeCredential authentication failed: Persistence check failed. Reason: KeyChain authorization/authentication failed. .Error code: -25293. OS error code -25293.

Aby obejść ten problem, możesz wyłączyć przechowywanie poświadczeń między sesjami, uruchamiając następujące polecenie. Po wprowadzeniu tej zmiany należy jednak uruchomić Connect-AzAccount za każdym razem, gdy rozpoczniesz nową sesję programu PowerShell.

Disable-AzContextAutosave

Połączenie dla tej witryny nie jest bezpieczne

Gdy domyślną przeglądarką jest Microsoft Edge, możesz napotkać następujący błąd podczas próby interaktywnego zalogowania się do platformy Azure za pomocą Connect-AzAccount: "Połączenie dla tej witryny nie jest bezpieczne." Aby rozwiązać ten problem, odwiedź stronę edge://net-internals/#hsts w przeglądarce Microsoft Edge. Dodaj localhost w obszarze "Usuń zasady zabezpieczeń domeny" i kliknij pozycję Usuń.

Błąd w domenie dotyczący zweryfikowanego identyfikatora URI podstawowej jednostki usługi

Błąd: Wartości właściwości identifierUris muszą używać zweryfikowanej domeny organizacji lub jej poddomeny jest wyświetlany podczas uruchamiania New-AzADServicePrincipal lub New-AzADApplication.

Z powodu przełomowej zmiany w Microsoft Entra, która wymaga, aby URI AppId w aplikacjach jednogrzebieniowych używały domyślnego schematu lub zweryfikowanych domen, należy uaktualnić moduł Az.Resources do wersji 4.1.0 lub nowszej, aby nadal korzystać z poleceń cmdlet New-AzADServicePrincipal lub New-AzADApplication.

Możesz również przeprowadzić aktualizację modułu Az PowerShell do wersji 6.0 lub nowszej.

Linia czasu

Wymóg wszedł w życie 15 października 2021 r.

Dotknięte wersje

Wpływ następujących wersji programu Azure PowerShell jest związany z przełomowymi zmianami w AzureAD:

  • Moduł Az.Resources programu PowerShell w wersji 3.5.1-preview lub starszej.
  • Moduł Az programu PowerShell w wersji 5.9.0 lub nowszej.

Jeśli po uaktualnieniu nadal występują problemy, możesz otworzyć problem.

Rozwiązanie

Jeśli nie możesz zaktualizować do wcześniej opisanych modułów PowerShell, możesz skorzystać z następujących kroków podczas tworzenia obiektu zasadniczego usługi:

Inne problemy

Jeśli wystąpi problem z produktem w programie Azure PowerShell, który nie został wymieniony w tym artykule lub potrzebujesz dalszej pomocy, zgłoś problem w usłudze GitHub.