Azure PowerShell-kontextobjekt

Azure PowerShell använder Azure PowerShell-kontextobjekt (Azure-kontexter) för att lagra information om prenumeration och autentisering. Om du har mer än en prenumeration kan du använda Azure-kontexter för att välja den prenumeration som du vill köra Azure PowerShell-cmdletar på. Azure-kontexter används också för att lagra inloggningsinformation över flera PowerShell-sessioner och köra bakgrundsaktiviteter.

Den här artikeln beskriver hur du hanterar Azure-kontexter, inte hantering av prenumerationer eller konton. Om du vill hantera användare, prenumerationer, klienter eller annan kontoinformation kan du läsa dokumentationen om Microsoft Entra-ID . Mer information om hur du använder kontexter för att köra bakgrundsaktiviteter eller parallella uppgifter finns i Köra Azure PowerShell-cmdletar i PowerShell-jobb när du har bekantat dig med Azure-kontexter.

Översikt över Azure-kontextobjekt

Azure-kontexter är PowerShell-objekt som representerar din aktiva prenumeration för att köra kommandon och den autentiseringsinformation som krävs för att ansluta till ett Azure-moln. Med Azure-kontexter behöver Azure PowerShell inte autentisera ditt konto varje gången du byter prenumerationer. En Azure-kontext består av följande:

  • Det konto som användes för att logga in på Azure med Connect-AzAccount. Azure-kontexter behandlar användare, program-ID:n och tjänsters huvudnamn från ett kontoperspektiv.
  • Den aktiva prenumerationen, ett serviceavtal med Microsoft om att skapa och köra Azure-resurser som är kopplade till en klientorganisation. Klientorganisationer kallas ofta organisationer i dokumentationen eller när du arbetar med Active Directory.
  • En referens till en tokencache, en lagrad autentiseringstoken för åtkomst till ett Azure-moln. Var denna token lagras och hur länge bestäms av inställningen för att spara kontext automatiskt.

Mer information om dessa termer finns i Microsoft Entra-terminologi. Autentiseringstokens som används av Azure-kontexter är samma som andra lagrade tokens som ingår i en beständig session.

När du loggar in med Connect-AzAccount skapas minst en Azure-kontext för din standardprenumeration. Objektet som returneras av Connect-AzAccount är standardkontexten som används för resten av PowerShell-sessionen.

Hämta Azure-kontexter

Tillgängliga Azure-kontexter hämtas med cmdleten get-AzContext. Visa en lista över tillgängliga kontexter med parametern ListAvailable :

Get-AzContext -ListAvailable

Eller hämta en kontext efter namn:

Get-AzContext -Name 'mycontext'

Kontextnamn får vara ett annat än namnet på den associerade prenumerationen.

Viktigt!

De tillgängliga Azure-kontexterna är inte alltid dina tillgängliga prenumerationer. Azure-kontexter representerar endast lokalt lagrad information. Du kan hämta dina prenumerationer med cmdleten Get-AzSubscription.

Skapa en ny Azure-kontext från prenumerationsinformation

Cmdleten set-AzContext används både för att skapa nya Azure-kontexter och ange dem som aktiv kontext. Det enklaste sättet att skapa en ny Azure-kontext är att använda befintlig prenumerationsinformation. Cmdleten är utformad för att ta utdataobjektet från Get-AzSubscription som ett pipelinevärde och konfigurera en ny Azure-kontext:

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

Eller ange prenumerationsnamnet eller -ID och klientorganisations-ID om det behövs:

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

Om parametern Namn utelämnas används prenumerationens namn och ID som kontextnamn i formatet Prenumerationsnamn (prenumerations-ID).

Ändra den aktiva Azure-kontexten

Både Set-AzContext och Select-AzContext kan användas för att ändra den aktiva Azure-kontexten. Som beskrivs i Skapa en ny Azure-kontext Set-AzContextskapar du en ny Azure-kontext för en prenumeration om den inte finns och växlar sedan den aktiva kontexten till den.

Select-AzContext är avsedd att endast användas med befintliga Azure-kontexter och fungerar på samma sätt som med , Set-AzContext -Contextmen är utformad för användning med rörledningar:

Set-AzContext -Context $(Get-AzContext -Name 'mycontext') # Set a context with an inline Azure context object
Get-AzContext -Name 'mycontext' | Select-AzContext # Set a context with a piped Azure context object

Liksom många andra konto- och kontexthanteringskommandon i Azure PowerShell Set-AzContext och Select-AzContext stöder parametern Omfång så att du kan styra hur länge kontexten är aktiv. Med omfång kan du ändra en enskild sessions aktiva kontext utan att ändra standardinställningen:

Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process

För att undvika att växla kontexter för en hel PowerShell-session kan Azure PowerShell-kommandon med en AzContext-parameter köras mot en viss kontext:

$context = Get-AzContext -Name "mycontext"
New-AzVM -Name ExampleVM -AzContext $context

Den andra huvudsakliga användningen av kontexter med Azure PowerShell-cmdletar är att köra bakgrundskommandon. Mer information om hur du kör PowerShell-jobb med Azure PowerShell finns i Köra Azure PowerShell-cmdletar i PowerShell-jobb.

Spara Azure-kontexter mellan PowerShell-sessioner

Som standard sparas Azure-kontexter för användning mellan PowerShell-sessioner. Du kan ändra det här beteendet på följande sätt:

  • Logga in med -Scope Process och Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    Azure-kontexten som returneras som en del av den här inloggningen är endast giltig för den aktuella sessionen och sparas inte automatiskt, oavsett inställningen Spara automatiskt i Azure PowerShell-kontexten.

  • Inaktivera kontextspara automatiskt i Azure PowerShell med cmdleten Disable-AzContextAutosave . Att du inaktivera inställningen spara kontext automatiskt rensar inte alla lagrade tokens. Information om hur du rensar lagrad information om Azure-kontext finns i Ta bort Azure-kontexter och autentiseringsuppgifter.

  • Aktivera explicit inställningen spara Azure-kontext automatiskt kan aktiveras med cmdleten Enable-AzContextAutosave. När spara automatiskt är aktiverat lagras en användares kontexter lokalt för senare PowerShell-sessioner.

  • Spara kontexter manuellt med Save-AzContext som ska användas i framtida PowerShell-sessioner, där de kan läsas in med import-AzContext:

    Save-AzContext -Path current-context.json # Save the current context
    Save-AzContext -Profile $profileObject -Path other-context.json # Save a context object
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

Varning

Om du inaktiverar spara kontext automatiskt rensas inte eventuell lagrad kontextinformation som sparats. Om du vill ta bort lagrad information använder du cmdleten Clear-AzContext. Mer information om hur du tar bort sparade kontexter finns i Ta bort kontexter och autentiseringsuppgifter.

Vart och ett av dessa kommandon stöder parametern Omfång , som kan ta ett värde av Process för att endast gälla för den aktuella körningsprocessen. Om du till exempel vill se till att nyligen skapade kontexter inte sparas när du har avslutat en PowerShell-session:

Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription 'sub-id' -Tenant 'other-tenant'

Kontextinformation och tokens lagras i $env:USERPROFILE\.Azure-katalogen i Windows och på $HOME/.Azure på andra plattformar. Känslig information som prenumerations-ID:t och klient-ID:t kan fortfarande exponeras i lagrad information, via loggar eller sparade kontexter. Information om hur du rensar lagrad information finns i avsnittet Ta bort kontexter och autentiseringsuppgifter.

Ta bort Azure-kontexter och lagrade autentiseringsuppgifter

Så här rensar du Azure-kontexter och autentiseringsuppgifter:

  • Logga ut från ett konto med Disconnect-AzAccount. Du kan logga ut från ett konto antingen via konto eller kontext:

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    
    Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name
    Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
    

    Vid frånkoppling tas alltid lagrade autentiseringstokens bort och alla sparade kontexter som är kopplade till den frånkopplade användaren eller kontexten tas bort.

  • Använd Clear-AzContext. Den här cmdleten tar alltid bort lagrade kontexter, autentiseringstoken och loggar ut dig.

  • Ta bort en kontext med Remove-AzContext:

    Remove-AzContext -Name 'mycontext' # Remove by name
    Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
    

    Om du tar bort den aktiva kontexten kopplas du från från Azure och måste autentisera igen med Connect-AzAccount.

Se även