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-AzContext
skapar 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 -Context
men ä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
ochConnect-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 medImport-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
Azure PowerShell