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. Wenn Sie Benutzer, Abonnements, Mandanten oder andere Kontoinformationen verwalten möchten, lesen Sie die Dokumentation zur 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 zum Anmelden bei Azure verwendet wurdeConnect-AzAccount. Azure-Kontexte behandeln Benutzer, Anwendungs-IDs und Dienstprinzipale aus Kontosicht gleich.
  • Das aktive Abonnement, ein Servicevertrag mit Microsoft zum Erstellen und Ausführen 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 das automatische Speichern des Kontexts bestimmen, wo das Token gespeichert wird und wie lange es beibehalten wird.

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 zurückgegebene Connect-AzAccount 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 Get-AzContext Cmdlet abgerufen. Auflisten der verfügbaren Kontexte mit dem Parameter ListAvailable :

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 *

Von Bedeutung

Die verfügbaren Azure-Kontexte sind nicht immer Ihre verfügbaren Abonnements. Azure-Kontexte stellen nur lokal gespeicherte Informationen dar. Sie können Ihre Abonnements mit dem Get-AzSubscription Cmdlet abrufen.

Erstellen eines neuen Azure-Kontexts anhand von Abonnementinformationen

Das Set-AzContext Cmdlet 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 Set-AzContext Cmdlet dient dazu, das Ausgabeobjekt Get-AzSubscription als weitergeleiteten Wert zu übernehmen und einen neuen Azure-Kontext zu konfigurieren:

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

Oder geben Sie bei Bedarf den Namen oder die ID des Abonnements und die Mandanten-ID an:

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

Wenn der Parameter Name nicht angegeben 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. erstellt wie unter Set-AzContext 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

Wie viele andere Konto- und Kontextverwaltungsbefehle in Azure PowerShell unterstützen Set-AzContext und Select-AzContext den Scope-Parameter, damit Sie steuern können, wie lange der Kontext aktiv ist. 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

Um den Wechsel von Kontexten für eine gesamte PowerShell-Sitzung zu vermeiden, können Azure PowerShell-Befehle mit einem AzContext-Parameter für einen 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 in PowerShell-Sitzungen

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 mit -Scope Process und Connect-AzAccount an.

    Connect-AzAccount -Scope Process
    

    Der azure-Kontext, der als Teil dieser Anmeldung zurückgegeben wird, ist nur für die aktuelle Sitzung gültig und wird unabhängig von der Einstellung für das automatische Speichern von Azure PowerShell-Kontext nicht automatisch gespeichert.

  • Deaktivieren Sie das automatische Speichern von Kontexten in Azure PowerShell mit dem Disable-AzContextAutosave Cmdlet. 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.

  • Speichern Sie Kontexte manuell mit Save-AzContext, damit sie in zukünftigen PowerShell-Sitzungen verwendet und mit Import-AzContext geladen werden können.

    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 deaktivieren des automatischen Speicherns von Kontexten werden keine gespeicherten Kontextinformationen gelöscht, die gespeichert wurden. Verwenden Sie das Clear-AzContext Cmdlet, 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 Scope-Parameter, der den Wert Process annehmen kann, um nur auf den aktuell laufenden Prozess angewendet zu werden. 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 $HOME/.Azure auf anderen Plattformen gespeichert. Vertrauliche Informationen wie Abonnement-IDs und Mandanten-IDs können weiterhin in gespeicherten Informationen, über Protokolle oder gespeicherte Kontexte verfügbar gemacht 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 von einem Konto ab mit Disconnect-AzAccount. Sie können sich von jedem Konto entweder nach Konto oder Kontext abmelden:

    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. Dieses Cmdlet entfernt immer gespeicherte Kontexte und Authentifizierungstoken und meldet Sie ab.

  • 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, werden Sie von Azure getrennt und müssen erneut authentifizieren mit Connect-AzAccount.

Siehe auch