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 }Använd parametern
AzContextmed valfri Azure PowerShell cmdlet för att tillhandahålla ett Azure-kontextobjekt:$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
AsJobsom 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 -AsJobOm du vill se om en cmdlet stöder
AsJobkan du kontrollera referensdokumentationen. ParameternAsJobkrä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