Obiekty kontekstu środowiska Azure PowerShell

Środowisko Azure PowerShell używa obiektów kontekstu środowiska Azure PowerShell (kontekstów platformy Azure) do przechowywania informacji o subskrypcji i uwierzytelnianiu. Jeśli masz więcej niż jedną subskrypcję, konteksty platformy Azure umożliwiają wybranie subskrypcji, na której mają być uruchamiane polecenia cmdlet środowiska 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ądzania 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, zapoznaj się z dokumentacją usługi Azure Active Directory. Aby dowiedzieć się więcej o używaniu kontekstów do uruchamiania zadań w tle lub równolegle, zobacz Używanie poleceń cmdlet środowiska Azure PowerShell w zadaniach programu PowerShell, gdy już zapoznasz się z kontekstami platformy Azure.

Omówienie obiektów kontekstu platformy Azure

Konteksty platformy Azure to obiekty programu PowerShell odzwierciedlające aktywną subskrypcję, w której są uruchamiane polecenia, oraz informacje uwierzytelniania wymagane do nawiązywania połączenia z chmurą platformy Azure. Dzięki kontekstom platformy Azure środowisko Azure PowerShell nie musi ponownie uwierzytelniać Twojego konta za każdym razem, gdy przełączasz subskrypcje. Składniki kontekstu platformy Azure są następujące:

  • Konto użyte do zalogowania się do platformy Azure za pomocą polecenia Connect-AzAccount. Konteksty platformy Azure traktują użytkowników, identyfikatory aplikacji i jednostki usług tak samo z perspektywy konta.
  • Aktywna subskrypcja, umowa serwisowa z firmą Microsoft na tworzenie i uruchamianie zasobów platformy Azure, które są skojarzone z dzierżawą. Dzierżawy są często określane jako organizacje w dokumentacji lub podczas pracy z usługą Active Directory.
  • Odwołanie do pamięci podręcznej tokenu, przechowywanego tokenu uwierzytelniania na potrzeby uzyskiwania dostępu do chmury platformy Azure. Miejsce, w którym ten token jest przechowywany, oraz czas jego trwania jest określany przez ustawienia automatycznego zapisywania kontekstu.

Aby uzyskać więcej informacji o tych terminach, zobacz Terminologia usługi Azure Active Directory. Tokeny uwierzytelniania używane przez konteksty platformy Azure są takie same jak inne przechowywane tokeny będące składnikami sesji trwałej.

Po zalogowaniu się przy użyciu polecenia Connect-AzAccount dla domyślnej subskrypcji zostanie utworzony co najmniej jeden kontekst platformy Azure. Obiekt zwrócony przez polecenie Connect-AzAccount jest domyślnym kontekstem platformy Azure używanym przez pozostałą część sesji programu PowerShell.

Pobieranie kontekstów platformy Azure

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

Get-AzContext -ListAvailable

Lub pobierz kontekst według nazwy:

Get-AzContext -Name 'mycontext'

Nazwy kontekstów mogą być inne od nazwy skojarzonej subskrypcji.

Ważne

Dostępne konteksty platformy Azure to nie zawsze są Twoje dostępne subskrypcje. Konteksty platformy Azure odzwierciedlają tylko lokalnie przechowywane informacje. Subskrypcje można pobrać przy użyciu polecenia cmdlet Get-AzSubscription.

Tworzenie nowego kontekstu platformy Azure na podstawie informacji o subskrypcji

Polecenie cmdlet Set-AzContext służy zarówno do tworzenia nowych kontekstów platformy Azure, jak i ustawiania ich jako aktywnego kontekstu. Najprostszy sposób na utworzenie nowego kontekstu platformy Azure to użycie informacji o istniejącej subskrypcji. Polecenie cmdlet ma za zadanie pobranie obiektu wyjściowego z polecenia Get-AzSubscription jako wartości w postaci potoku i skonfigurowanie nowego kontekstu platformy Azure:

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

Lub podania w razie potrzeby identyfikatora albo nazwy subskrypcji oraz identyfikatora dzierżawy:

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

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

Zmienianie aktywnego kontekstu platformy Azure

Aby zmienić aktywny kontekst platformy Azure, można użyć zarówno polecenia Set-AzContext, jak i Select-AzContext. Zgodnie z opisem w artykule Tworzenie nowego kontekstu platformy Azure tworzy nowy kontekst platformy Azure dla subskrypcji, Set-AzContext jeśli nie istnieje, a następnie przełącza aktywny kontekst do tego kontekstu.

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

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

Podobnie jak w przypadku wielu innych poleceń zarządzania kontem i kontekstem w Azure PowerShell, Set-AzContext i Select-AzContext obsługuje Scope parametr , dzięki czemu można kontrolować, jak długo kontekst jest aktywny. Scope Umożliwia zmianę aktywnego kontekstu pojedynczej sesji bez zmiany domyślnego:

Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process

Aby uniknąć przełączania kontekstów dla całej sesji programu PowerShell, wszystkie polecenia Azure PowerShell można uruchamiać względem danego kontekstu z parametrem AzContext :

$context = Get-AzContext -Name "mycontext"
New-AzVM -Name ExampleVM -AzContext $context

Innym głównym zastosowaniem kontekstów z poleceniami cmdlet środowiska Azure PowerShell jest uruchamianie poleceń w tle. Aby dowiedzieć się więcej o uruchamianiu zadań programu PowerShell przy użyciu środowiska Azure PowerShell, zobacz Uruchamianie poleceń cmdlet środowiska Azure PowerShell w zadaniach programu PowerShell.

Zapisywanie kontekstów platformy Azure w różnych sesjach programu PowerShell

Domyślnie konteksty platformy Azure są zapisywane w celu używania ich między sesjami programu PowerShell. To zachowanie można zmienić w następujący sposób:

  • Zaloguj się przy użyciu polecenia -Scope Process z parametrem 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 zostanie zapisany automatycznie, niezależnie od ustawienia automatycznego zapisywania kontekstu Azure PowerShell.

  • Wyłącz automatyczne zapisywanie kontekstu w 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 o kontekście platformy Azure, zobacz Usuwanie poświadczeń i kontekstów platformy Azure.

  • Jawnie włącz automatyczne zapisywanie kontekstu platformy Azure przy użyciu polecenia cmdlet Enable-AzContextAutosave. Gdy automatyczne zapisywanie jest włączone, wszystkie konteksty użytkownika są przechowywane lokalnie na potrzeby przyszłych sesji programu PowerShell.

  • Za pomocą polecenia Save-AzContext ręcznie zapisz konteksty do używania w przyszłych sesjach programu PowerShell, w których mogą być one ładowane za pomocą polecenia Import-AzContext:

    Save-AzContext -Path current-context.json # Save the current context
    Save-AzContext -Profile $profileObject -Path other-context.json # Save a context object
    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 żadnych zapisanych informacji o kontekście. Aby usunąć przechowywane informacje, użyj polecenia cmdlet Clear-AzContext. Aby uzyskać więcej informacji na temat usuwania zapisanych kontekstów, zobacz sekcję Usuwanie kontekstów i poświadczeń.

Każde z tych poleceń obsługuje parametr Scope, który może przyjmować wartość Process do stosowania tylko do obecnie uruchomionego procesu. Aby na przykład zapewnić, że nowo utworzone konteksty nie są zapisywane po zakończeniu sesji programu PowerShell:

Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription "sub-id" -Tenant "other-tenant"

Informacje o kontekście i tokeny są przechowywane w katalogu $env:USERPROFILE\.Azure w systemie Windows oraz w katalogu $HOME/.Azure na innych platformach. Informacje poufne, 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 sekcję Usuwanie kontekstów i poświadczeń.

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

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

  • Wyloguj się z konta przy użyciu polecenia Disconnect-AzAccount. Możesz wylogować się z dowolnego konta według konta lub kontekstu:

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    
    Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name
    Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
    

    Rozłączenie zawsze powoduje usunięcie przechowywanych tokenów uwierzytelniania i wyczyszczenie zapisanych kontekstów skojarzonych z odłączonym użytkownikiem lub kontekstem.

  • Użyj polecenia Clear-AzContext. To polecenie cmdlet zawsze usuwa przechowywane konteksty, tokeny uwierzytelniania i wy wylogowania.

  • Usuń kontekst za pomocą polecenia Remove-AzContext:

    Remove-AzContext -Name 'mycontext' # Remove by name
    Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
    

    Jeśli usuniesz aktywny kontekst, nastąpi odłączenie od platformy Azure i będzie konieczne ponowne uwierzytelnienie przy użyciu polecenia Connect-AzAccount.

Zobacz też