Dela via


Köra Azure PowerShell-cmdletar i PowerShell-jobb

Azure PowerShell är beroende av att ansluta till ett Azure-moln och vänta på svar, så de flesta av dessa cmdletar blockerar din PowerShell-session tills de får ett svar från molnet. Med PowerShell-jobb kan du köra cmdletar i bakgrunden eller utföra flera uppgifter i Azure samtidigt, inifrån en enda PowerShell-session.

Den här artikeln är en kort översikt över hur du kör Azure PowerShell-cmdletar som PowerShell-jobb och söker efter slutförande. Att köra kommandon i Azure PowerShell kräver användning av Azure PowerShell-kontexter, som beskrivs i detalj i Azure-kontexter och inloggningsuppgifter. Mer information om PowerShell-jobb finns i Om PowerShell-jobb.

Azure-kontexter med PowerShell-jobb

PowerShell-jobb körs som separata processer utan en ansluten PowerShell-session, så dina Azure-autentiseringsuppgifter måste delas med dem. Autentiseringsuppgifter skickas som Azure-kontextobjekt med någon av följande metoder:

  • Automatisk kontextpersistens. Kontextpersistence är aktiverat som standard och bevarar inloggningsinformationen över flera sessioner. Med kontextpersistence aktiverat skickas den aktuella Azure-kontexten till den nya processen:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • Ange ett Azure-kontextobjekt med valfri Azure PowerShell-cmdlet som har en AzContext- parameter:

    $context = Get-AzContext -Name 'mycontext' # Get an Azure context object
    $vmadmin = Get-Credential
    
    $job = Start-Job {
      New-AzVM -Name MyVm -AzContext $Using:context -Credential $Using:vmadmin
    }
    

    Om kontextpersistence är inaktiverat krävs parametern AzContext.

  • Använd parametern AsJob som tillhandahålls av vissa Azure PowerShell-cmdletar. Den här växeln startar automatiskt cmdleten som ett PowerShell-jobb med hjälp av den aktiva Azure-kontexten:

    $vmadmin = Get-Credential
    $job = New-AzVM -Name MyVm -Credential $vmadmin -AsJob
    

    Om du vill se om en cmdlet stöder AsJobläser du referensdokumentationen. Parametern AsJob kräver inte att kontexten sparas automatiskt.

Du kan kontrollera statusen för ett jobb som körs med cmdleten Get-Job. Om du vill hämta utdata från ett jobb hittills använder du cmdleten Receive-Job.

Om du vill fjärrkontrollera en åtgärds förlopp i Azure använder du de Get cmdletar som är associerade med den typ av resurs som ändras av jobbet:

$vmadmin = Get-Credential
$context = Get-AzContext -Name 'mycontext'
$vmName = 'MyVm'

$job = Start-Job {
  New-AzVM -Name $Using:vmName -AzContext $Using:context -Credential $Using:vmadmin
}

Get-Job -Id $job.Id
Get-AzVM -Name $vmName

Se även