Dela via


Azure PowerShell-kontextobjekt

Azure PowerShell använder Azure PowerShell-kontextobjekt (Azure-kontexter) för att lagra information om prenumeration och autentisering. Om du har åtkomst till flera prenumerationer kan du med Azure-kontexter välja vilken prenumeration 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, klientorganisationer 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 mot 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:

  • Kontot 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. Klienter kallas ofta organisationer i dokumentationen eller när de arbetar med Microsoft Entra.
  • En referens till en tokencache, en lagrad autentiseringstoken för åtkomst till ett Azure-moln. Inställningarna för sparande av kontext automatiskt avgör var token lagras och hur länge den bevaras.

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 MyContextName

Kontextnamn får vara ett annat än namnet på den associerade prenumerationen. För att fastställa kontextnamnet använder du värdet för egenskapen Namn , som inte visas som standard.

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

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 för att skapa och ange nya Azure-kontexter som aktiv kontext. Det enklaste sättet att skapa en ny Azure-kontext är att använda befintlig prenumerationsinformation. Cmdleten Set-AzContext är utformad för att ta utdataobjektet från Get-AzSubscription som ett piped-vä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 Subscription Name (subscription-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 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

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 MyContextName | 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 MyContextName
New-AzVM -Name ExampleVM -AzContext $context

Den andra primära 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 Azure-kontextinformation finns i Ta bort Azure-kontexter och lagrade autentiseringsuppgifter.

  • Uttryckligen aktivera automatisk sparande av Azure-kontext 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
    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 Azure-kontexter och lagrade 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
Set-AzContext -Subscription 'Subscription ID or Name' -Tenant 00000000-0000-0000-0000-000000000000

Kontextinformation och token lagras i $env:USERPROFILE\.Azure katalogen i Windows och $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 Ta bort Azure-kontexter och lagrade 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 MyContextName # Disconnect by context name
    
    $context = Get-AzContext
    Disconnect-AzAccount -AzureContext $context # 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 och autentiseringstoken och loggar ut dig.

  • Ta bort en kontext med Remove-AzContext:

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

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

Se även