Freigeben über


Azure PowerShell-Kontextobjekte

Azure PowerShell verwendet Azure PowerShell-Kontextobjekte (Azure-Kontexte), um Abonnement- und Authentifizierungsinformationen zu speichern. Besitzer mit Zugriff auf mehrere Abonnements können mithilfe von Azure-Kontexten das Abonnement auswählen, für das Azure PowerShell-Cmdlets ausgeführt werden sollen. Azure-Kontexte werden auch verwendet, um Anmeldeinformationen über mehrere PowerShell-Sitzungen hinweg zu speichern und Hintergrundaufgaben auszuführen.

In diesem Artikel wird die Verwaltung von Azure-Kontexten behandelt, nicht die Verwaltung von Abonnements oder Konten. Informationen zur Verwaltung von Benutzern, Abonnements, Mandanten und anderen Kontoinformationen finden Sie in der Dokumentation zu Microsoft Entra ID. Informationen zur Verwendung von Kontexten für die Ausführung von Hintergrundaufgaben oder parallelen Aufgaben finden Sie unter Ausführen von Azure PowerShell-Cmdlets in PowerShell-Aufträgen. Machen Sie sich jedoch zuvor mit Azure-Kontexten vertraut.

Übersicht über Azure-Kontextobjekte

Bei Azure-Kontexten handelt es sich um PowerShell-Objekte, die Ihr aktives Abonnement, für das Befehle ausgeführt werden sollen, sowie die Authentifizierungsinformationen darstellen, die zum Herstellen einer Verbindung mit einer Azure-Cloud erforderlich sind. Mit Azure-Kontexten muss Azure PowerShell Ihr Konto nicht bei jedem Abonnementwechsel erneut authentifizieren. Ein Azure-Kontext umfasst Folgendes:

  • Das Konto, das für die Anmeldung bei Azure mit Connect-AzAccount verwendet wurde. In Azure-Kontexten werden Benutzer, Anwendungs-IDs und Dienstprinzipale aus Kontosicht gleich behandelt.
  • Das aktive Abonnement – ein Servicevertrag mit Microsoft für die Erstellung und Ausführung von Azure-Ressourcen, die einem Mandanten zugeordnet sind. Mandanten werden in der Dokumentation oder im Zusammenhang mit Microsoft Entra häufig als Organisationen bezeichnet.
  • Ein Verweis auf einen Tokencache – ein gespeichertes Authentifizierungstoken für den Zugriff auf eine Azure-Cloud. Die Einstellungen für die automatische Kontextspeicherung bestimmen den Speicherort und die Aufbewahrungsdauer des Tokens.

Weitere Informationen zu diesen Begriffen finden Sie in der Microsoft Entra-Terminologie. Von Azure-Kontexten verwendete Authentifizierungstoken unterscheiden sich nicht von anderen gespeicherten Token einer beständigen Sitzung.

Wenn Sie sich mit Connect-AzAccount anmelden, wird mindestens ein Azure-Kontext für Ihr Standardabonnement erstellt. Bei dem von Connect-AzAccount zurückgegebenen Objekt handelt es sich um den Azure-Standardkontext, der für die restliche PowerShell-Sitzung verwendet wird.

Abrufen von Azure-Kontexten

Verfügbare Azure-Kontexte werden mithilfe des Cmdlets Get-AzContext abgerufen. Verwenden Sie den Parameter ListAvailable, um alle verfügbaren Kontexte aufzulisten:

Get-AzContext -ListAvailable

Oder rufen Sie einen Kontext anhand des Namens ab:

Get-AzContext -Name MyContextName

Kontextnamen können sich vom Namen des zugeordneten Abonnements unterscheiden. Um den Kontextnamen zu ermitteln, verwenden Sie den Wert der Eigenschaft Name, der nicht standardmäßig angezeigt wird.

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

Wichtig

Bei den verfügbaren Azure-Kontexten handelt es sich nicht immer um Ihre verfügbaren Abonnements. Azure-Kontexte stellen nur lokal gespeicherte Informationen dar. Ihre Abonnements können Sie mithilfe des Cmdlets Get-AzSubscription abrufen.

Erstellen eines neuen Azure-Kontexts auf der Grundlage von Abonnementinformationen

Das Cmdlet Set-AzContext wird verwendet, um neue Azure-Kontexte als aktiven Kontext zu erstellen und festzulegen. Am einfachsten lässt sich ein neuer Azure-Kontext auf der Grundlage vorhandener Abonnementinformationen erstellen. Das Cmdlet Set-AzContext akzeptiert das Ausgabeobjekt von Get-AzSubscription als weitergeleiteten Wert und konfiguriert einen neuen Azure-Kontext:

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

Bei Bedarf können alternativ auch der Name oder die ID des Abonnements und die Mandanten-ID angegeben werden:

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

Ohne Angabe des Parameters Name werden Name und ID des Abonnements als Kontextname im Format Subscription Name (subscription-id) verwendet.

Ändern des aktiven Azure-Kontexts

Der aktive Azure-Kontext kann sowohl mit Set-AzContext als auch mit Select-AzContext geändert werden. Set-AzContext erstellt wie unter Erstellen eines neuen Azure-Kontexts auf der Grundlage von Abonnementinformationen beschrieben einen neuen Azure-Kontext für ein Abonnement, sofern noch keiner vorhanden ist, und wechselt dann zu diesem Kontext.

Select-AzContext ist nur für die Verwendung mit vorhandenen Azure-Kontexten vorgesehen und funktioniert ähnlich wie Set-AzContext -Context, ist aber für die Verwendung mit Piping konzipiert:

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

Genau wie viele andere Konto- und Kontextverwaltungsbefehle in Azure PowerShell unterstützen auch Set-AzContext und Select-AzContext den Parameter Scope zum Steuern der Aktivitätsdauer des Kontexts. Mithilfe von Scope können Sie den aktiven Kontext einer einzelnen Sitzung ändern, ohne den Standardkontext zu ändern:

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

Zur Vermeidung des Kontextwechsels für eine gesamte PowerShell-Sitzung können alle Azure PowerShell-Befehle mithilfe des Parameters AzContext für einen bestimmten Kontext ausgeführt werden:

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

Der andere primäre Zweck von Kontexten mit Azure PowerShell-Cmdlets ist das Ausführen von Hintergrundbefehlen. Weitere Informationen zum Ausführen von PowerShell-Aufträgen mit Azure PowerShell finden Sie unter Ausführen von Azure PowerShell-Cmdlets in PowerShell-Aufträgen.

Speichern von Azure-Kontexten zwischen PowerShell-Sitzungen

Azure-Kontexte werden standardmäßig für die Verwendung zwischen PowerShell-Sitzungen gespeichert. Dieses Verhalten kann wie folgt geändert werden:

  • Melden Sie sich mithilfe von Connect-AzAccount unter Verwendung von -Scope Process an.

    Connect-AzAccount -Scope Process
    

    Der im Rahmen dieser Anmeldung zurückgegebene Azure-Kontext ist ausschließlich für die aktuelle Sitzung gültig und wird unabhängig von der Einstellung für die automatische Azure PowerShell-Kontextspeicherung nicht automatisch gespeichert.

  • Die automatische Kontextspeicherung in Azure PowerShell kann mithilfe des Cmdlets Disable-AzContextAutosave deaktiviert werden. Gespeicherte Token werden durch die Deaktivierung der automatischen Kontextspeicherung nicht gelöscht. Informationen zum Löschen gespeicherter Azure-Kontextinformationen finden Sie unter Entfernen von Azure-Kontexten und gespeicherten Anmeldeinformationen.

  • Die automatische Speicherung von Azure-Kontexten kann mithilfe des Cmdlets Enable-AzContextAutosave explizit aktiviert werden. Bei aktivierter automatischer Speicherung werden die Kontexte eines Benutzers lokal für spätere PowerShell-Sitzungen gespeichert.

  • Mithilfe von Save-AzContext können Kontexte manuell gespeichert und mithilfe von Import-AzContext in späteren PowerShell-Sitzungen geladen werden:

    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
    

Warnung

Wenn Sie die automatische Kontextspeicherung deaktivieren, werden keine gespeicherten Kontextinformationen gelöscht. Zum Entfernen gespeicherter Informationen muss das Cmdlet Clear-AzContext verwendet werden. Weitere Informationen zum Entfernen gespeicherter Kontexte finden Sie unter Entfernen von Azure-Kontexten und gespeicherten Anmeldeinformationen.

Jeder dieser Befehle unterstützt den Parameter Scope. Dieser kann auf den Wert Process festgelegt werden, damit der Befehl nur für den aktuell ausgeführten Prozess gilt. Wenn Sie also beispielsweise sicherstellen möchten, dass neu erstellte Kontexte nach dem Verlassen einer PowerShell-Sitzung nicht gespeichert werden, verwenden Sie Folgendes:

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

Kontextinformationen und Token werden unter Windows im Verzeichnis $env:USERPROFILE\.Azure und auf anderen Plattformen unter $HOME/.Azure gespeichert. Es kann vorkommen, dass vertrauliche Informationen wie Abonnement- und Mandanten-IDs in gespeicherten Informationen über Protokolle oder gespeicherte Kontexte offengelegt werden. Informationen zum Löschen gespeicherter Informationen finden Sie unter Entfernen von Azure-Kontexten und gespeicherten Anmeldeinformationen.

Entfernen von Azure-Kontexten und gespeicherten Anmeldeinformationen

So löschen Sie Azure-Kontexte und -Anmeldeinformationen:

  • Melden Sie sich bei einem Konto mit Disconnect-AzAccount ab. Zur Abmeldung können Sie entweder das Konto oder den Kontext verwenden:

    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
    

    Beim Trennen der Verbindung werden gespeicherte Authentifizierungstoken entfernt und gespeicherte Kontexte gelöscht, die dem getrennten Benutzer oder Kontext zugeordnet sind.

  • Verwenden Sie Clear-AzContext. Mit diesem Cmdlet werden gespeicherte Kontexte und Authentifizierungstokens immer entfernt, und Sie werden abgemeldet.

  • Entfernen eines Kontexts mit Remove-AzContext:

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

    Wenn Sie den aktiven Kontext entfernen, wird die Verbindung mit Azure getrennt, und Sie müssen sich mithilfe von Connect-AzAccount erneut authentifizieren.

Weitere Informationen