Speichern von Benutzeranmeldeinformationen zwischen PowerShell-Sitzungen

Warnung

Das AzureRM PowerShell-Modul ist seit dem 29. Februar 2024 offiziell veraltet. Benutzern wird empfohlen, von AzureRM zum Az PowerShell-Modul zu migrieren, um weiterhin Support und Updates zu erhalten.

Obwohl das AzureRM-Modul möglicherweise weiterhin funktioniert, wird es nicht mehr gewartet, und es wird kein Support mehr angeboten. Die weitere Nutzung erfolgt daher nach Ermessen und auf Risiko des Benutzers. Weitere Informationen zum Übergang zum Az-Modul finden Sie in unseren Migrationsressourcen.

Azure PowerShell bietet ein Feature namens Azure Context Autosave mit den folgenden Funktionen:

  • Speicherung von Anmeldeinformationen zur Wiederverwendung in neuen PowerShell-Sitzungen
  • Einfachere Verwendung von Hintergrundaufgaben für die Ausführung von Cmdlets mit langer Ausführungszeit
  • Wechsel zwischen Konten, Abonnements und Umgebungen ohne separate Anmeldung
  • Gleichzeitige Ausführung von Aufgaben mit unterschiedlichen Anmeldeinformationen und Abonnements über die gleiche PowerShell-Sitzung

Definition von Azure-Kontexten

Bei einem Azure-Kontext handelt es sich um einen Satz von Informationen, die das Ziel von Azure PowerShell-Cmdlets definieren. Der Kontext setzt sich aus fünf Teilen zusammen:

  • Ein Konto: Der Benutzername oder Dienstprinzipal, der verwendet wird, um die Kommunikation mit Azure zu authentifizieren.
  • Ein Abonnement: Das Azure-Abonnement mit den Ressourcen, für die eine Aktion ausgeführt wird.
  • Ein Mandant: Der Microsoft Entra-Mandant, der Ihr Abonnement enthält. Mandanten sind eher für die Dienstprinzipalauthentifizierung relevant.
  • Eine Umgebung: Die spezielle Azure-Cloud, die als Ziel fungiert (in der Regel die globale Azure-Cloud). Über die Umgebungseinstellung können Sie jedoch auch nationale Clouds, Government Clouds und lokale Clouds (Azure Stack) als Ziel festlegen.
  • Anmeldeinformationen: Die Informationen, die von Azure verwendet werden, um Ihre Identität zu überprüfen und die Autorisierung des Zugriffs auf Ressourcen in Azure zu bestätigen.

In früheren Versionen musste bei jedem Öffnen einer neuen PowerShell-Sitzung ein Azure-Kontext erstellt werden. Ab Azure PowerShell 4.4.0 können Azure-Kontexte jeweils automatisch gespeichert werden, wenn eine neue PowerShell-Sitzung geöffnet wird.

Automatisches Speichern des Kontexts für die nächste Anmeldung

In den Versionen 6.3.0 und höher behält Azure PowerShell Ihre Kontextinformationen zwischen Sitzungen automatisch bei. Wenn PowerShell den Kontext und die Anmeldeinformationen verwerfen soll, verwenden Sie Disable-AzureRmContextAutoSave. Sie müssen sich jedes Mal an Azure anmelden, wenn Sie eine PowerShell-Sitzung öffnen.

Mit Enable-AzureRmContextAutosave können Sie es Azure PowerShell ermöglichen, den Kontext über das Sitzungsende hinaus zu speichern. Kontext und Anmeldeinformationen werden automatisch in einem speziellen ausgeblendeten Ordner in Ihrem Benutzerverzeichnis (%AppData%\Roaming\Windows Azure PowerShell) gespeichert. Jede neue PowerShell-Sitzung verwendet den Kontext aus Ihrer letzten Sitzung als Ziel.

Die Cmdlets zum Verwalten von Azure-Kontexten ermöglichen eine präzise Steuerung. So können Sie festlegen, ob Änderungen nur für die aktuelle PowerShell-Sitzung (Process-Bereich) oder für jede PowerShell-Sitzung (CurrentUser-Bereich) gelten sollen. Ausführlichere Informationen zu diesen Optionen finden Sie unter Verwenden von Kontextbereichen.

Ausführen von Azure PowerShell-Cmdlets als Hintergrundaufträge

Dank derautomatischen Speicherung des Azure-Kontexts können Sie Ihren Kontext auch für PowerShell-Hintergrundaufträge freigeben. Mit PowerShell können Sie Aufgaben mit langer Ausführungszeit als Hintergrundaufträge starten und überwachen, ohne auf den Abschluss der Aufgaben warten zu müssen. Sie können Anmeldeinformationen auf zwei Arten an Hintergrundaufträge weitergeben:

  • Übergeben des Kontexts als Argument

    Bei den meisten AzureRM-Cmdlets kann der Kontext als Parameter an das Cmdlet übergeben werden. Das folgende Beispiel veranschaulicht das Übergeben eines Kontexts an einen Hintergrundauftrag:

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Additional parameters ...]} -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 ...]}

Falls Sie das Ergebnis des Hintergrundauftrags ermitteln möchten, können Sie mit Get-Job den Auftragsstatus prüfen und mit Wait-Job auf den Abschluss des Auftrags warten. Mit Receive-Job können Sie die Ausgabe des Hintergrundauftrags erfassen oder anzeigen. Weitere Informationen finden Sie unter about_Jobs.

Erstellen, Auswählen, Umbenennen und Entfernen von Kontexten

Für die Kontexterstellung müssen Sie bei Azure angemeldet sein. Das Cmdlet Connect-AzureRmAccount (oder dessen Alias Login-AzureRmAccount) legt den von Azure PowerShell-Cmdlets verwendeten Standardkontext fest und ermöglicht den Zugriff auf beliebige Mandanten oder Abonnements, die im Rahmen Ihrer Anmeldeinformationen zulässig sind.

Verwenden Sie Set-AzureRmContext (oder dessen Alias Select-AzureRmSubscription), um nach der Anmeldung einen neuen Kontext hinzuzufügen.

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

Im vorherigen Beispiel wird ein neuer Kontext mit dem Ziel „Contoso Subscription 1“ und Ihren aktuellen Anmeldeinformationen hinzugefügt. Der neue Kontext heißt „Contoso1“. Falls Sie keinen Namen für den Kontext angeben, wird ein Standardname aus Konto-ID und Abonnement-ID verwendet.

Einen vorhandenen Kontext können Sie mithilfe des Cmdlets Rename-AzureRmContext umbenennen. Beispiel:

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

In diesem Beispiel wird der Kontext mit dem automatisch vergebenen Namen [user1@contoso.org; 123456-7890-1234-564321] in den einfachen Namen „Contoso2“ umbenannt. Dank Vervollständigung mit der TAB-TASTE können Sie in Kontextverwaltungs-Cmdlets schnell einen Kontext auswählen.

Zum Entfernen eines Kontexts steht das Cmdlet Remove-AzureRmContext zur Verfügung. Beispiel:

Remove-AzureRmContext Contoso2

Verwirft den Kontext namens „Contoso2“. Sie können diesen Kontext neu erstellen, indem Sie Set-AzureRmContext verwenden.

Entfernen von Anmeldeinformationen

Mit Disconnect-AzureRmAccount (auch bekannt als Logout-AzureRmAccount) können Sie alle Anmeldeinformationen und zugeordneten Kontexte für einen Benutzer oder Dienstprinzipal entfernen. Wenn das Cmdlet Disconnect-AzureRmAccount ohne Parameter ausgeführt wird, entfernt es alle Anmeldeinformationen und Kontexte, die dem Benutzer oder Dienstprinzipal im aktuellen Kontext zugeordnet sind. Wenn Sie einen bestimmten Prinzipal als Ziel verwenden möchten, können Sie einen Benutzernamen, Dienstprinzipalnamen oder Kontext übergeben.

Disconnect-AzureRmAccount user1@contoso.org

Verwenden von Kontextbereichen

Manchmal möchten Sie unter Umständen einen Kontext in einer PowerShell-Sitzung auswählen, ändern oder entfernen, ohne dass sich das auf andere Sitzungen auswirkt. Das Standardverhalten von Kontext-Cmdlets kann mithilfe des Parameters Scopegeändert werden. Der Bereich Process überschreibt das Standardverhalten, indem er die Gültigkeit auf die aktuelle Sitzung beschränkt. Im Gegensatz dazu ändert der Bereich CurrentUser den Kontext nicht nur in der aktuellen Sitzung, sondern in allen Sitzungen.

Verwenden Sie beispielsweise Folgendes, um den Standardkontext in der aktuellen PowerShell-Sitzung zu ändern, ohne andere Fenster oder den Kontext zu beeinflussen, der beim nächsten Öffnen einer Sitzung verwendet wird:

Select-AzureRmContext Contoso1 -Scope Process

Speicherung der Einstellung für die automatische Speicherung des Kontexts

Die Einstellung für die automatische Speicherung des Kontexts wird im Azure PowerShell-Verzeichnis des Benutzers (%AppData%\Roaming\Windows Azure PowerShell) gespeichert. Manche Computerkonten haben möglicherweise keinen Zugriff auf dieses Verzeichnis. In solchen Fällen können Sie die Umgebungsvariable verwenden.

$env:AzureRmContextAutoSave=$true

Bei Verwendung von $true wird der Kontext automatisch gespeichert. Bei Verwendung von $false wird der Kontext nicht gespeichert.

Änderungen am Modul „AzureRM.Profile“

Neue Cmdlets für die Kontextverwaltung

  • Enable-AzureRmContextAutosave: Ermöglicht das Speichern des Kontexts zwischen PowerShell-Sitzungen. Änderungen wirken sich auf den globalen Kontext aus.
  • Disable-AzureRmContextAutosave: Deaktiviert die automatische Speicherung des Kontexts. Bei jeder neuen PowerShell-Sitzung ist eine erneute Anmeldung erforderlich.
  • Select-AzureRmContext: Ermöglicht das Auswählen eines Standardkontexts. Alle Cmdlets verwenden die Anmeldeinformationen aus diesem Kontext für die Authentifizierung.
  • Disconnect-AzureRmAccount: Dient zum Entfernen aller einem Konto zugeordneten Anmeldeinformationen und Kontexte.
  • Remove-AzureRmContext: Dient zum Entfernen eines benannten Kontexts.
  • Rename-AzureRmContext: Dient zum Umbenennen eines vorhandenen Kontexts.

Änderungen an vorhandenen Profil-Cmdlets

  • Add-AzureRmAccount: Ermöglicht es, den Gültigkeitsbereich der Anmeldung auf den Prozess oder auf den aktuellen Benutzer festzulegen. Ermöglicht die Benennung des Standardkontexts nach der Authentifizierung.
  • Import-AzureRmContext: Ermöglicht es, den Gültigkeitsbereich der Anmeldung auf den Prozess oder auf den aktuellen Benutzer festzulegen.
  • Set-AzureRmContext: Ermöglicht die Wahl vorhandener benannter Kontexte sowie die Festlegung, ob Änderungen auf den Prozess oder auf den aktuellen Benutzer angewendet werden sollen.