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, klientorganisationer eller annan kontoinformation, se Azure Active Directory-dokumentationen. När du har fått grepp om Azure-kontexter finns det information om hur du använder kontexter för att köra bakgrundsaktiviteter eller parallella uppgifter finns i Använda Azure PowerShell-cmdletar i PowerShell-jobb.
Ö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 de här villkoren finns i Azure Active Directory-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. Lista alla 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 Name 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. Enligt beskrivningen i Skapa en ny Azure-kontextSet-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 avsett att endast användas med befintliga Azure-kontexter och fungerar på samma sätt som med , Set-AzContext -Contextmen är utformat 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
Precis som många andra kommandon för konto- och kontexthantering i Azure PowerShell och Set-AzContextSelect-AzContext stöder parametern Scope så att du kan styra hur länge kontexten är aktiv. Scope gör att du kan ä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 alla Azure PowerShell kommandon köras mot en viss kontext med parametern AzContext :
$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 ProcessochConnect-AzAccount.Connect-AzAccount -Scope ProcessAzure-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 Azure PowerShell automatiskt spara kontext.
Inaktivera automatiskt sparande av kontext 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 alla 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 har stöd för parametern Scope, som kan ta ett värde om Process för att endast appliceras på den processen som körs för närvarande. 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, till exempel prenumerations-ID:t och klientorganisations-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 informationVid 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 objectOm du tar bort den aktiva kontexten kopplas du bort från Azure och måste autentiseras igen med
Connect-AzAccount.