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å att de flesta av dessa cmdletar blockerar PowerShell-sessionen 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 ger en kort översikt över hur du kör Azure PowerShell-cmdletar som PowerShell-jobb och kontrollerar att de är klara. Om du ska köra kommandon i Azure PowerShell måste du använda 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. Autentiseringsuppgifterna skickas som Azure-kontextobjekt med någon av följande metoder:

  • Automatisk kontextpersistens. Kontextpersistens är aktiverat som standard och bevarar din inloggningsinformation över flera sessioner. Med kontextpersistens 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 AsJob läser du referensdokumentationen. Parametern AsJob kräver inte att kontexten sparas automatiskt för att aktiveras.

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 kontrollera en åtgärds status på Azure via en fjärranslutning använder du de Get-cmdletar som är kopplade till 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