Udostępnij za pośrednictwem


Obiekty kontekstowe programu Azure PowerShell

Program Azure PowerShell używa obiektów kontekstowych programu Azure PowerShell (kontekstów platformy Azure) do przechowywania informacji dotyczących subskrypcji i uwierzytelniania. Jeśli masz dostęp do wielu subskrypcji, konteksty platformy Azure umożliwiają wybranie subskrypcji do uruchamiania poleceń cmdlet programu Azure PowerShell. Konteksty platformy Azure są również używane do przechowywania informacji logowania w wielu sesjach programu PowerShell i uruchamiania zadań w tle.

W tym artykule opisano zarządzanie kontekstami platformy Azure, a nie zarządzanie subskrypcjami ani kontami. Jeśli chcesz zarządzać użytkownikami, subskrypcjami, dzierżawami lub innymi informacjami o koncie, zobacz dokumentację Microsoft Entra ID. Aby dowiedzieć się więcej na temat używania kontekstów do uruchamiania zadań w tle lub równoległych, zobacz Uruchamianie poleceń cmdlet programu Azure PowerShell w zadaniach programu PowerShell po zapoznaniu się z kontekstami platformy Azure.

Omówienie obiektów kontekstowych platformy Azure

Konteksty platformy Azure to obiekty programu PowerShell reprezentujące aktywną subskrypcję do uruchamiania poleceń i informacje uwierzytelniania potrzebne do nawiązania połączenia z chmurą platformy Azure. W przypadku kontekstów platformy Azure program Azure PowerShell nie musi ponownie uwierzytelniać konta za każdym razem, gdy przełączasz subskrypcje. Kontekst platformy Azure składa się z następujących elementów:

  • Konto używane do logowania się na platformie Azure przy użyciu Connect-AzAccount. Konteksty platformy Azure traktują użytkowników, identyfikatory aplikacji i jednostki usługi tak samo z perspektywy konta.
  • Aktywna subskrypcja , umowa serwisowa z firmą Microsoft umożliwiająca tworzenie i uruchamianie zasobów platformy Azure powiązanych z dzierżawcą . Najemcy są często określani jako organizacje w dokumentacji lub podczas pracy z Microsoft Entra.
  • Odwołanie do pamięci podręcznej tokenu , która przechowuje token uwierzytelniania, umożliwiający dostęp do chmury Azure. Ustawienia automatycznego zapisywania kontekstu określają, gdzie jest przechowywany token i jak długo się utrzymuje.

Aby uzyskać więcej informacji na temat tych warunków, zobacz Microsoft Entra Terminology. Tokeny uwierzytelniania używane przez konteksty platformy Azure są takie same jak inne przechowywane tokeny, które są częścią sesji trwałej.

Po zalogowaniu się przy użyciu Connect-AzAccountzostanie utworzony co najmniej jeden kontekst platformy Azure dla subskrypcji domyślnej. Obiekt zwracany przez Connect-AzAccount jest domyślnym kontekstem platformy Azure używanym w pozostałej części sesji programu PowerShell.

Pobieranie kontekstów platformy Azure

Dostępne konteksty platformy Azure są pobierane za pomocą polecenia cmdlet Get-AzContext. Podaj listę dostępnych kontekstów z parametrem ListAvailable.

Get-AzContext -ListAvailable

Lub uzyskaj kontekst według nazwy:

Get-AzContext -Name MyContextName

Nazwy kontekstowe mogą być inne niż nazwa skojarzonej subskrypcji. Aby określić nazwę kontekstu, użyj wartości właściwości Name, która nie jest wyświetlana domyślnie.

Get-AzContext -ListAvailable | Select-Object -Property *

Ważny

Dostępne konteksty platformy Azure nie zawsze są twoimi dostępnymi subskrypcjami. Konteksty platformy Azure reprezentują tylko informacje przechowywane lokalnie. Subskrypcje można uzyskać za pomocą polecenia cmdlet Get-AzSubscription.

Tworzenie nowego kontekstu platformy Azure na podstawie informacji o subskrypcji

Polecenie cmdlet Set-AzContext służy do tworzenia i ustawiania nowych kontekstów platformy Azure jako aktywnego kontekstu. Najprostszym sposobem utworzenia nowego kontekstu platformy Azure jest użycie istniejących informacji o subskrypcji. Polecenie cmdlet Set-AzContext jest przeznaczone do pobierania obiektu wyjściowego z Get-AzSubscription jako wartości potokowej i konfigurowania nowego kontekstu platformy Azure:

Get-AzSubscription -SubscriptionName MySubscriptionName |
  Set-AzContext -Name MyContextName

Możesz też w razie potrzeby podać nazwę lub identyfikator subskrypcji i identyfikator dzierżawy:

Set-AzContext -Name MyContextName -Subscription MySubscriptionName -Tenant 00000000-0000-0000-0000-000000000000

Jeśli parametr Nazwa zostanie pominięty, nazwa i identyfikator subskrypcji są używane jako nazwa kontekstu w formacie Subscription Name (subscription-id).

Zmienianie aktywnego kontekstu platformy Azure

Zarówno Set-AzContext, jak i Select-AzContext mogą służyć do zmiany aktywnego kontekstu platformy Azure. Zgodnie z opisem w sekcji Tworzenie nowego kontekstu platformy Azure, Set-AzContext tworzy nowy kontekst platformy Azure dla subskrypcji, jeśli dotychczasowy nie istnieje, a następnie przełącza aktywny kontekst na ten nowo utworzony.

Select-AzContext ma być używany tylko z istniejącymi kontekstami platformy Azure i działa podobnie do używania Set-AzContext -Context, ale jest przeznaczony do użycia z potokami:

Set-AzContext -Context (Get-AzContext -Name MyContextName) # Set a context with an inline Azure context object
Get-AzContext -Name MyContextName | Select-AzContext # Set a context with a piped Azure context object

Podobnie jak wiele innych poleceń zarządzania kontem i kontekstem w programie Azure PowerShell, Set-AzContext i Select-AzContext obsługują parametr Zakres, dzięki czemu można kontrolować, jak długo kontekst jest aktywny. Scope pozwala ci zmienić aktywny kontekst pojedynczej sesji bez zmiany domyślnego:

Get-AzContext -Name MyContextName | Select-AzContext -Scope Process

Aby uniknąć przełączania kontekstów dla całej sesji programu PowerShell, polecenia programu Azure PowerShell z parametrem AzContext mogą być uruchamiane względem danego kontekstu:

$context = Get-AzContext -Name MyContextName
New-AzVM -Name ExampleVM -AzContext $context

Innym podstawowym zastosowaniem kontekstów z poleceniami cmdlet programu Azure PowerShell jest uruchamianie poleceń w tle. Aby dowiedzieć się więcej na temat uruchamiania zadań programu PowerShell przy użyciu programu Azure PowerShell, zobacz Uruchamianie poleceń cmdlet programu Azure PowerShell w zadaniach programu PowerShell.

Zapisywanie kontekstów platformy Azure w sesjach programu PowerShell

Domyślnie konteksty platformy Azure są zapisywane do użycia między sesjami programu PowerShell. To zachowanie można zmienić na następujące sposoby:

  • Zaloguj się przy użyciu -Scope Process i Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    Kontekst platformy Azure zwrócony w ramach tego logowania jest prawidłowy tylko dla bieżącej sesji i nie jest zapisywany automatycznie, niezależnie od ustawień automatycznego zapisywania kontekstu w programie Azure PowerShell.

  • Wyłącz automatyczne zapisywanie kontekstu w programie Azure PowerShell za pomocą polecenia cmdlet Disable-AzContextAutosave. Wyłączenie automatycznego zapisywania kontekstu nie powoduje wyczyszczenia żadnych przechowywanych tokenów. Aby dowiedzieć się, jak wyczyścić przechowywane informacje kontekstowe platformy Azure, zobacz Usuwanie kontekstów platformy Azure i przechowywanych poświadczeń.

  • Jawne włączanie automatycznego zapisywania kontekstu platformy Azure można włączyć za pomocą polecenia cmdlet Enable-AzContextAutosave. Po włączeniu automatycznego zapisywania konteksty użytkownika są przechowywane lokalnie na potrzeby późniejszych sesji programu PowerShell.

  • Ręcznie zapisz konteksty przy użyciu Save-AzContext do użycia w przyszłych sesjach programu PowerShell, gdzie można je załadować przy użyciu Import-AzContext:

    Save-AzContext -Path current-context.json # Save the current context
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

Ostrzeżenie

Wyłączenie automatycznego zapisywania kontekstu nie powoduje wyczyszczenia zapisanych informacji kontekstowych. Aby usunąć przechowywane informacje, użyj polecenia cmdlet Clear-AzContext. Aby uzyskać więcej informacji na temat usuwania zapisanych kontekstów, zobacz Usuwanie kontekstów platformy Azure i przechowywanych poświadczeń.

Każde z tych poleceń obsługuje parametr zakresu , który może przyjąć wartość , aby dotyczyło tylko aktualnie działającego procesu. Aby na przykład upewnić się, że nowo utworzone konteksty nie są zapisywane po zakończeniu sesji programu PowerShell:

Disable-AzContextAutosave -Scope Process
Set-AzContext -Subscription 'Subscription ID or Name' -Tenant 00000000-0000-0000-0000-000000000000

Informacje kontekstowe i tokeny są przechowywane w katalogu $env:USERPROFILE\.Azure w systemie Windows i $HOME/.Azure na innych platformach. Poufne informacje, takie jak identyfikatory subskrypcji i identyfikatory dzierżawy, mogą być nadal widoczne w przechowywanych informacjach, za pośrednictwem dzienników lub zapisanych kontekstów. Aby dowiedzieć się, jak wyczyścić przechowywane informacje, zobacz Usuwanie kontekstów platformy Azure i przechowywanych poświadczeń.

Usuwanie kontekstów platformy Azure i przechowywanych poświadczeń

Aby wyczyścić konteksty i poświadczenia platformy Azure:

  • Wyloguj się z konta przy użyciu Disconnect-AzAccount. Możesz wylogować się z dowolnego konta, wybierając jedną z dwóch opcji: według konta lub kontekstu.

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    Disconnect-AzAccount -ContextName MyContextName # Disconnect by context name
    
    $context = Get-AzContext
    Disconnect-AzAccount -AzureContext $context # Disconnect using context object information
    

    Rozłączanie zawsze usuwa przechowywane tokeny uwierzytelniania i czyści zapisane konteksty skojarzone z odłączonym użytkownikiem lub kontekstem.

  • Użyj Clear-AzContext. Ten cmdlet zawsze usuwa przechowywane konteksty i tokeny uwierzytelniania oraz wylogowuje Cię.

  • Usuń kontekst z Remove-AzContext:

    Remove-AzContext -Name MyContextName # Remove by name
    Get-AzContext -Name MyContextName | Remove-AzContext # Remove by piping an Azure context object
    

    Jeśli usuniesz aktywny kontekst, odłączysz się od platformy Azure i musisz ponownie uwierzytelnić się przy użyciu Connect-AzAccount.

Zobacz też