Freigeben über


Azure PowerShell-Kontextobjekte

Azure PowerShell verwendet Azure PowerShell-Kontextobjekte (Azure-Kontexte), um Abonnement- und Authentifizierungsinformationen zu speichern. Wenn Sie Zugriff auf mehrere Abonnements haben, können Sie in Azure-Kontexten das Abonnement auswählen, auf dem Azure PowerShell-Cmdlets ausgeführt werden sollen. Azure-Kontexte werden auch verwendet, um Anmeldeinformationen in mehreren PowerShell-Sitzungen 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 zum Verwenden von Kontexten zum Ausführen von Hintergrund- oder parallelen Aufgaben finden Sie unter Ausführen von Azure PowerShell-Cmdlets in PowerShell-Aufträgen, nachdem Sie sich mit Azure-Kontexten vertraut machen.

Übersicht über Azure-Kontextobjekte

Azure-Kontexte sind PowerShell-Objekte, die Ihr aktives Abonnement zum Ausführen von Befehlen darstellen, und die Authentifizierungsinformationen, die zum Herstellen einer Verbindung mit einer Azure-Cloud erforderlich sind. Bei Azure-Kontexten muss Azure PowerShell Ihr Konto nicht jedes Mal erneut authentifizieren, wenn Sie Abonnements wechseln. Ein Azure-Kontext besteht aus:

  • Das Konto, das für die Anmeldung bei Azure mit Connect-AzAccount verwendet wurde. Azure-Kontexte behandeln Benutzer, Anwendungs-IDs und Dienstprinzipale aus Kontosicht gleich.
  • 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 unter Microsoft Entra Terminologie. Authentifizierungstoken, die von Azure-Kontexten verwendet werden, sind identisch mit anderen gespeicherten Token, die Teil einer persistenten Sitzung sind.

Wenn Sie sich mit Connect-AzAccountanmelden, wird mindestens ein Azure-Kontext für Ihr Standardabonnement erstellt. Das von Connect-AzAccount zurückgegebene Objekt ist der Standardmäßige Azure-Kontext, der für die restliche PowerShell-Sitzung verwendet wird.

Abrufen von Azure-Kontexten

Verfügbare Azure-Kontexte werden mit dem Cmdlet 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 unterscheiden sich möglicherweise vom Namen des zugehörigen Abonnements. Um den Kontextnamen zu ermitteln, verwenden Sie den Wert der Name-Eigenschaft, die standardmäßig nicht 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. Sie können Ihre Abonnements mit dem Cmdlet Get-AzSubscription abrufen.

Erstellen eines neuen Azure-Kontexts anhand von Abonnementinformationen

Das cmdlet Set-AzContext wird verwendet, um neue Azure-Kontexte als aktiven Kontext zu erstellen und festzulegen. Die einfachste Möglichkeit zum Erstellen eines neuen Azure-Kontexts besteht darin, vorhandene Abonnementinformationen zu verwenden. Das cmdlet Set-AzContext dient dazu, das Ausgabeobjekt aus Get-AzSubscription als weitergeleiteten Wert zu übernehmen und einen neuen Azure-Kontext zu konfigurieren:

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

Wenn der parameter Name weggelassen wird, werden der Name und die ID des Abonnements als Kontextname im Format Subscription Name (subscription-id)verwendet.

Ändern des aktiven Azure-Kontexts

Sowohl Set-AzContext als auch Select-AzContext können verwendet werden, um den aktiven Azure-Kontext zu ändern. Wie in Erstellen eines neuen Azure-Kontextsbeschrieben, erstellt Set-AzContext einen neuen Azure-Kontext für ein Abonnement, wenn keins vorhanden ist, und wechselt dann den aktiven Kontext zu diesem.

Select-AzContext soll nur mit vorhandenen Azure-Kontexten verwendet werden und funktioniert ähnlich wie die Verwendung von Set-AzContext -Context, ist jedoch für die Verwendung mit Rohrleitungen 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

Wie viele andere Konto- und Kontextverwaltungsbefehle in Azure PowerShell unterstützen Set-AzContext und Select-AzContext den parameter Scope, sodass Sie steuern können, wie lange der Kontext aktiv ist. Mit Scope können Sie den aktiven Kontext einer einzelnen Sitzung ändern, ohne Ihre Standardeinstellung zu verändern.

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

Um den Wechsel von Kontexten während einer gesamten PowerShell-Sitzung zu vermeiden, können Azure PowerShell-Befehle mit einem Parameter AzContext in einem bestimmten Kontext ausgeführt werden.

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

Die andere primäre Verwendung von Kontexten mit Azure PowerShell-Cmdlets besteht darin, Hintergrundbefehle auszuführen. 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 über mehrere PowerShell-Sitzungen hinweg

Azure-Kontexte werden standardmäßig für die Verwendung zwischen PowerShell-Sitzungen gespeichert. Sie können dieses Verhalten auf folgende Weise ändern:

  • 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.

  • Deaktivieren Sie das automatische Speichern von Kontexten in Azure PowerShell mit dem Cmdlet Disable-AzContextAutosave. Durch deaktivieren des automatischen Speicherns von Kontexten werden keine gespeicherten Token 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. Wenn das automatische Speichern aktiviert ist, werden die Kontexte eines Benutzers für spätere PowerShell-Sitzungen lokal 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

Durch das Deaktivieren des automatischen Speicherns von Kontexten werden keine gespeicherten Kontextinformationen gelöscht. Verwenden Sie das Cmdlet Clear-AzContext, um gespeicherte Informationen zu entfernen. Weitere Informationen zum Entfernen gespeicherter Kontexte finden Sie unter Entfernen von Azure-Kontexten und gespeicherten Anmeldeinformationen.

Jeder dieser Befehle unterstützt den parameter Scope, der einen Wert von Process annehmen kann, um nur auf den aktuellen ausgeführten Prozess anzuwenden. Um beispielsweise sicherzustellen, dass neu erstellte Kontexte nach dem Beenden einer PowerShell-Sitzung nicht gespeichert werden:

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

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

Entfernen Sie Azure-Kontexte und gespeicherte 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
    

    Durch die Trennung werden gespeicherte Authentifizierungstoken immer 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, sind Sie von Azure getrennt und müssen mit Connect-AzAccounterneut authentifizieren.

Weitere Informationen