Utrwalanie poświadczeń użytkownika między sesjami programu PowerShell

Ostrzeżenie

Moduł AzureRM PowerShell został oficjalnie przestarzały od 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, umieszczając wszelkie dalsze zastosowania według uznania i ryzyka użytkownika. Zapoznaj się z naszymi zasobami migracji, aby uzyskać wskazówki dotyczące przejścia do modułu Az.

Program Azure PowerShell oferuje funkcję automatycznego zapisywania kontekstu platformy Azure, która udostępnia następujące funkcje:

  • Przechowywanie informacji logowania do ponownego użycia w nowych sesjach programu PowerShell.
  • Łatwiejsze korzystanie z zadań w tle w celu wykonywania długotrwałych poleceń cmdlet.
  • Możliwość przełączania kont, subskrypcji i środowisk bez konieczności osobnego logowania się.
  • Możliwość wykonywania zadań z użyciem różnych poświadczeń i subskrypcji jednocześnie w tej samej sesji programu PowerShell.

Zdefiniowane konteksty platformy Azure

Kontekst platformy Azure to zestaw informacji, który definiuje cel poleceń cmdlet programu Azure PowerShell. Kontekst składa się z pięciu części:

  • Konto — nazwa użytkownika lub jednostka usługi używana do uwierzytelniania komunikacji z platformą Azure
  • Subskrypcja — subskrypcja platformy Azure zawierająca zasoby, których dotyczą wykonywane operacje.
  • Dzierżawa — dzierżawa firmy Microsoft, która zawiera Twoją subskrypcję. Dzierżawy są ważniejsze w przypadku uwierzytelniania za pomocą jednostki usługi.
  • Środowisko — konkretna chmura platformy Azure będąca chmurą docelową. Zwykle jest to chmura globalna platformy Azure. Jednak ustawienia środowiska pozwalają również wybierać jako obiekty docelowe chmury krajowe, rządowe oraz lokalne (usługa Azure Stack).
  • Poświadczenia — informacje używane przez platformę Azure do zweryfikowania Twojej tożsamości i potwierdzenia, że masz autoryzację do uzyskania dostępu do zasobów na platformie Azure

W poprzednich wersjach kontekst platformy Azure musiał być tworzony każdorazowo po otwarciu nowej sesji programu PowerShell. Począwszy od programu Azure PowerShell w wersji 4.4.0, konteksty platformy Azure mogą być automatycznie zapisywane przy każdym otwarciu nowej sesji programu PowerShell.

Automatyczne zapisywanie kontekstu na potrzeby następnego logowania

Program Azure PowerShell w wersji 6.3.0 i nowszych automatycznie zachowuje informacje o kontekście między sesjami. Aby skonfigurować w programie PowerShell zapominanie kontekstu i poświadczeń, użyj polecenia Disable-AzureRmContextAutoSave. W takim przypadku konieczne będzie logowanie się do platformy Azure każdorazowo po otwarciu nowej sesji programu PowerShell.

Aby umożliwić programowi Azure PowerShell zapamiętywanie kontekstu po zamknięciu sesji programu PowerShell, użyj polecenia Enable-AzureRmContextAutosave. Informacje o kontekście i poświadczenia będą automatycznie zapisywane w specjalnym ukrytym folderze w katalogu użytkownika (%AppData%\Roaming\Windows Azure PowerShell). Każda nowa sesja programu PowerShell wybiera kontekst użyty w ostatniej sesji jako docelowy.

Polecenia cmdlet, które umożliwiają zarządzanie kontekstami platformy Azure, umożliwiają także szczegółowe kontrolowanie. Dzięki nim można określić, czy zmiany mają obowiązywać tylko w bieżącej sesji programu PowerShell (zakres Process), czy każdej sesji programu PowerShell (zakres CurrentUser). Te opcje są szczegółowo omówione w temacie Korzystanie z zakresów kontekstu.

Uruchamianie poleceń cmdlet programu PowerShell platformy Azure jako zadań w tle

Funkcja automatycznego zapisywania kontekstu platformy Azure umożliwia udostępnianie kontekstu użytkownika zadaniom programu PowerShell wykonywanym w tle. Program PowerShell umożliwia uruchamianie i monitorowanie długo wykonywanych zadań jako zadań w tle bez konieczności oczekiwania na zakończenie tych zadań. Użytkownik może udostępniać poświadczenia zadaniom w tle na dwa sposoby:

  • Przekazując kontekst jako argument

    Większość poleceń cmdlet usługi AzureRM umożliwia przekazanie kontekstu w postaci parametru do polecenia cmdlet. Kontekst można przekazać do zadania w tle w sposób przedstawiony w poniższym przykładzie:

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Dodatkowe parametry ...]} -ArgumentList (Get-AzureRmContext)


- Using the default context with Autosave enabled

If you have enabled **Context Autosave**, background jobs automatically use the default saved
context.

```powershell
$job = Start-Job { New-AzureRmVm [... Additional parameters ...]}

Jeśli chcesz poznać wynik zadania w tle, użyj polecenia Get-Job, aby sprawdzić stan zadania, oraz polecenia Wait-Job, aby poczekać na zakończenie zadania. Aby przechwycić lub wyświetlić wynik zadania w tle, użyj polecenia Receive-Job. Aby uzyskać więcej informacji, zobacz opis polecenia about_Jobs.

Tworzenie, wybieranie i usuwanie kontekstów oraz zmiana ich nazw

Aby utworzyć kontekst, musisz zalogować się do platformy Azure. Polecenie cmdlet Connect-AzureRmAccount (lub jego alias — Login-AzureRmAccount) ustawia domyślny kontekst używany przez polecenia cmdlet programu Azure PowerShell i pozwala użytkownikowi na dostęp do dowolnych dzierżaw lub subskrypcji, na które pozwalają poświadczenia.

Aby dodać nowy kontekst po zalogowaniu, użyj polecenia Set-AzureRmContext (lub jego aliasu — Select-AzureRmSubscription).

Set-AzureRMContext -Subscription 'Contoso Subscription 1' -Name 'Contoso1'

Poprzedni przykład dodaje nowy kontekst, którego obiektem docelowym jest „Contoso Subscription 1”, z użyciem bieżących poświadczeń użytkownika. Nowy kontekst ma nazwę „Contoso1”. Jeśli nie podasz nazwy dla tego kontekstu, będzie używana nazwa domyślna zawierająca identyfikator konta i identyfikator subskrypcji.

Aby zmienić nazwę istniejącego kontekstu, użyj polecenia cmdlet Rename-AzureRmContext. Na przykład:

Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]' 'Contoso2'

Ten przykład zmienia nazwę kontekstu o nazwie automatycznej [user1@contoso.org; 123456-7890-1234-564321] na prostą nazwę „Contoso2”. Polecenia cmdlet, które zarządzają kontekstami, używają również wypełniania po naciśnięciu klawisza TAB, dzięki czemu możliwe jest szybkie wybieranie kontekstu.

Aby na koniec usunąć kontekst, użyj polecenia cmdlet Remove-AzureRmContext. Na przykład:

Remove-AzureRmContext Contoso2

Powoduje zapomnienie kontekstu o nazwie „Contoso2”. Możesz utworzyć ten kontekst ponownie, używając polecenia Set-AzureRmContext

Usuwanie poświadczeń

Można usunąć wszystkie poświadczenia i skojarzone konteksty dla użytkownika lub jednostki usługi przy użyciu polecenia Disconnect-AzureRmAccount (znanego również jako Logout-AzureRmAccount). Polecenie cmdlet Disconnect-AzureRmAccount wykonywane bez parametrów usuwa wszystkie poświadczenia i konteksty skojarzone z użytkownikiem lub jednostką usługi w bieżącym kontekście. Możesz przekazać nazwę użytkownika, jednostkę usługi lub kontekst do konkretnego docelowego podmiotu zabezpieczeń.

Disconnect-AzureRmAccount user1@contoso.org

Korzystanie z zakresów kontekstu

W niektórych okolicznościach kontekst można wybrać, zmienić lub usunąć w sesji programu PowerShell bez wpływu na pozostałe sesje. Aby zmienić domyślne zachowanie poleceń cmdlet kontekstu, użyj parametru Scope. Zakres Process zastępuje domyślne działanie tego parametru, sprawiając, że dotyczy tylko bieżącej sesji. Z drugiej strony zakres CurrentUser zmienia kontekst we wszystkich sesjach, a nie tylko w bieżącej.

Aby na przykład zmienić kontekst domyślny w bieżącej sesji programu PowerShell bez wpływu na inne okna albo na kontekst używany przy następnym otwarciu sesji, użyj następujących poleceń:

Select-AzureRmContext Contoso1 -Scope Process

Jak zapamiętywane jest ustawienie automatycznego zapisywania kontekstu

Ustawienie automatycznego zapisywania kontekstu jest zapisywane q katalogu użytkownika programu Azure PowerShell (%AppData%\Roaming\Windows Azure PowerShell). Niektóre rodzaje kont komputerów mogą nie mieć dostępu do tego katalogu. W przypadku takich scenariuszy można użyć zmiennej środowiskowej

$env:AzureRmContextAutoSave=$true

Gdy jest ustawiona wartość $true, kontekst jest automatycznie zapisywany. Jeśli ustawiono wartość $false, kontekst nie zostanie zapisany.

Zmiany w module AzureRM.Profile

Nowe polecenia cmdlet do zarządzania kontekstem

Zmiany istniejących poleceń cmdlet dotyczących profilu

  • Add-AzureRmAccount — umożliwia określenie zakresu logowania do procesu lub bieżącego użytkownika. Pozwala na nazwanie domyślnego kontekstu po uwierzytelnieniu się.
  • Import-AzureRmContext — umożliwia określenie zakresu logowania do procesu lub bieżącego użytkownika.
  • Set-AzureRmContext — umożliwia wybór istniejących nazwanych kontekstów oraz określenie zakresu zmian kontekstu do procesu lub bieżącego użytkownika.