Dela via


Bevara autentiseringsuppgifter för användare mellan PowerShell-sessioner

Varning

AzureRM PowerShell-modulen är officiellt inaktuell från och med den 29 februari 2024. Användare rekommenderas att migrera från AzureRM till Az PowerShell-modulen för att säkerställa fortsatt support och uppdateringar.

Även om AzureRM-modulen fortfarande kan fungera, underhålls den inte längre eller stöds, vilket gör att användaren kan välja och riskera fortsatt användning. Se våra migreringsresurser för vägledning om övergången till Az-modulen.

Azure PowerShell erbjuder en funktion som kallas Azure Context Autosave, som ger följande funktioner:

  • Bevara inloggningsinformation för återanvändning i nya PowerShell-sessioner.
  • Enklare användning av bakgrundsaktiviteter för att köra tidskrävande cmdletar.
  • Växla mellan konton, prenumerationer och miljöer utan separat inloggning.
  • Köra uppgifter med olika autentiseringsuppgifter och prenumerationer, samtidigt från samma PowerShell-session.

Definitioner av Azure-kontexter

En Azure-kontext är en informationsuppsättning som definierar målet för Azure PowerShell-cmdletar. Kontexten består av fem delar:

  • Ett konto – användarnamnet eller tjänstens huvudnamn som används för att autentisera kommunikationen med Azure
  • En prenumeration – Azure-prenumerationen med de resurser där åtgärder vidtas.
  • En klientorganisation – Microsoft Entra-klientorganisationen som innehåller din prenumeration. Klienter är viktigare för ServicePrincipal-autentisering.
  • En miljö – det specifika Azure-moln som är målet, vanligtvis det globala Azure-molnet. Med miljöinställningen kan du även ange nationella, offentliga och lokala moln (Azure Stack) som mål.
  • Autentiseringsuppgifter – den information som används av Azure för att verifiera din identitet och bekräfta din behörighet att komma åt resurser i Azure

I tidigare versioner måste en Azure-kontext skapas varje gång du öppnade en ny PowerShell-session. Från och med Azure PowerShell v4.4.0 kan Azure-kontexter sparas automatiskt när du öppnar en ny PowerShell-session.

Spara automatiskt kontexten för nästa inloggning

I version 6.3.0 och senare behåller Azure PowerShell din kontextinformation mellan sessioner automatiskt. Om du vill ange att PowerShell ska glömma kontexten och autentiseringsuppgifterna ska du använda Disable-AzureRmContextAutoSave. Du måste logga in på Azure varje gång du öppnar en PowerShell-session.

Om du vill tillåta Azure PowerShell att komma ihåg kontexten när PowerShell-sessionen avslutas ska du använda Enable-AzureRmContextAutosave. Information om kontext och autentiseringsuppgifter sparas automatiskt i en särskild dold mapp i användarkatalogen (%AppData%\Roaming\Windows Azure PowerShell). I varje ny PowerShell-session används kontexten i den senaste sessionen som mål.

Med de cmdletar du kan använda för att hantera Azure-kontexter kan du också göra mer detaljerade inställningar. Om du vill att ändringarna ska tillämpas endast på den aktuella PowerShell-sessionen (omfånget Process) eller alla PowerShell-sessioner (omfånget CurrentUser). Dessa alternativ beskrivs mer detaljerat i Använda kontextomfång.

Köra Azure PowerShell-cmdletar som bakgrundsjobb

Med funktionen Azure Context Autosave kan du också dela din kontext med PowerShell-bakgrundsjobb. I PowerShell kan du starta och övervaka tidskrävande uppgifter som bakgrundsjobb utan att behöva vänta tills uppgifterna har slutförts. Du kan dela autentiseringsuppgifter med bakgrundsjobb på två olika sätt:

  • Skicka kontexten som ett argument

    Med de flesta AzureRM-cmdletar kan du skicka kontexten som en parameter till cmdleten. Du kan skicka en kontext till ett bakgrundsjobb enligt följande exempel:

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Ytterligare parametrar ...]} -ArgumentList (Get-AzureRmContext)


- Using the default context with Autosave enabled

If you have enabled **Context Autosave**, background jobs automatically use the default saved
context.

```powershell
$job = Start-Job { New-AzureRmVm [... Additional parameters ...]}

När du behöver veta resultatet av en bakgrundsaktivitet kan du använda Get-Job för att kontrollera jobbstatus och Wait-Job för att vänta tills jobbet är slutfört. Använd Receive-Job för att registrera eller visa resultatet av bakgrundsjobbet. Mer information finns i artikeln om jobb.

Skapa, välja, byta namn på och ta bort kontexter

Om du vill skapa en kontext måste du vara inloggad i Azure. Med cmdleten Connect-AzureRmAccount (eller dess alias Login-AzureRmAccount) anger du standardkontexten som används av Azure PowerShell-cmdletar och kan komma åt alla klienter eller prenumerationer som tillåts med dina autentiseringsuppgifter.

Om du vill lägga till en ny kontext efter inloggningen använder du Set-AzureRmContext (eller dess alias Select-AzureRmSubscription).

Set-AzureRMContext -Subscription 'Contoso Subscription 1' -Name 'Contoso1'

I exemplet ovan läggs en ny kontext till med målet ”Contoso Subscription 1” med hjälp av dina aktuella autentiseringsuppgifter. Den nya kontexten har namnet ”Contoso1”. Om du inte anger ett namn för kontexten används ett standardnamn med konto-ID och prenumerations-ID.

Byt namn på en befintlig kontext genom att använda cmdlet Rename-AzureRmContext. Till exempel:

Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]' 'Contoso2'

Det här exemplet byter namn på kontexten med det automatiska namnet [user1@contoso.org; 123456-7890-1234-564321] till ”Contoso2”. Cmdletar som hanterar kontexter använder också tabbifyllning, så att du snabbt kan välja kontexten.

Slutligen, för att ta bort en kontext använder du cmdlet Remove-AzureRmContext. Till exempel:

Remove-AzureRmContext Contoso2

Glömmer kontexten med namnet ”Contoso2”. Du kan återskapa den här kontexten med hjälp av Set-AzureRmContext

Ta bort autentiseringsuppgifter

Du kan ta bort alla autentiseringsuppgifter och associerade kontexter för en användare eller en tjänsts huvudnamn med hjälp av Disconnect-AzureRmAccount (kallas även Logout-AzureRmAccount). När den körs utan parametrar tar cmdleten Disconnect-AzureRmAccount bort alla autentiseringsuppgifter och kontexter som är associerade med användaren eller tjänstens huvudnamn i den aktuella kontexten. Du kan skicka användarnamn, tjänstens huvudnamn eller kontext med ett visst huvudkonto som mål.

Disconnect-AzureRmAccount user1@contoso.org

Använda kontextomfång

Ibland kan vilja du markera, ändra eller ta bort en kontext i en PowerShell-session utan att påverka andra sessioner. Om du vill ändra standardbeteendet för kontext-cmdletar ska du använda parametern Scope. Omfånget Process åsidosätter standardbeteendet genom att tillämpa det endast i den aktuella sessionen. Däremot ändrar omfånget CurrentUser kontexten i alla sessioner, inte bara i den aktuella sessionen.

Om du till exempel vill ändra standardkontexten i den aktuella PowerShell-sessionen utan att påverka andra fönster eller den kontext som används nästa gång en session öppnas, ska du använda:

Select-AzureRmContext Contoso1 -Scope Process

Hur inställningen spara automatiskt kontext bevaras

Inställningen för att spara kontext automatiskt sparas i användarens Azure PowerShell-katalog (%AppData%\Roaming\Windows Azure PowerShell). Vissa typer av datorkonton kanske inte har åtkomst till den här katalogen. I sådana scenarier kan du använda miljövariabeln

$env:AzureRmContextAutoSave=$true

När kontexten är inställd $truepå sparas kontexten automatiskt. Om det är inställt på $falsesparas inte kontexten.

Ändringar i modulen AzureRM.Profile

Nya cmdletar för att hantera kontext

Ändringar av befintliga profil-cmdletar

  • Add-AzureRmAccount – Gör det möjligt att ange omfång för inloggningen till processen eller till den aktuella användaren. Gör det möjligt att ge standardkontexten ett namn efter autentisering.
  • Import-AzureRmContext – Gör det möjligt att ange omfång för inloggningen till processen eller till den aktuella användaren.
  • Set-AzureRmContext – Gör det möjligt att välja befintliga, namngivna kontexter och ändra omfång till processen eller till den aktuella användaren.