Azure PowerShell-cmdlets uitvoeren in PowerShell-taken
Azure PowerShell is afhankelijk van een verbinding met de Azure-cloud en wachten op reacties, dus de meeste van deze cmdlets blokkeren uw PowerShell-sessie tot ze een reactie krijgen uit de cloud. Met PowerShell-taken kunt u cmdlets op de achtergrond uitvoeren of meerdere taken tegelijk uitvoeren in Azure, vanuit één PowerShell-sessie.
Dit artikel bevat een kort overzicht van de manier waarop u Azure PowerShell-cmdlets kunt uitvoeren als PowerShell-taken en hoe u controleert of die zijn voltooid. Voor de uitvoering van opdrachten in Azure PowerShell is het gebruik van Azure PowerShell-contexten nodig, die in detail worden behandeld in Azure-contexten en aanmeldingsgegevens. Raadpleeg Over PowerShell-taken voor meer informatie over PowerShell-taken.
Azure-contexten met PowerShell-taken
PowerShell-taken worden uitgevoerd als afzonderlijke processen zonder een bijbehorende PowerShell-sessie, dus uw Azure-referenties moeten daarmee worden gedeeld. Referenties worden doorgegeven als Azure-contextobjecten via een van de volgende methoden:
Automatische contextpersistentie. Contextpersistentie wordt standaard ingeschakeld en behoudt uw aanmeldingsgegevens tijdens meerdere sessies. Wanneer contextpersistentie is ingeschakeld, wordt de huidige Azure-context doorgegeven aan het nieuwe proces:
Enable-AzContextAutosave # Enables context autosave if not already on $vmadmin = Get-Credential Start-Job { New-AzVM -Name MyVm -Credential $Using:vmadmin }
Geef een Azure-contextobject op met een Azure PowerShell-cmdlet met een 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 }
Als contextpersistentie is uitgeschakeld, is de AzContext-parameter vereist.
Gebruik de AsJob-parameter die is opgegeven door sommige Azure PowerShell-cmdlets. Met deze schakeloptie wordt de cmdlet automatisch gestart als een PowerShell-taak met behulp van de actieve Azure-context:
$vmadmin = Get-Credential $job = New-AzVM -Name MyVm -Credential $vmadmin -AsJob
Als u wilt zien of een cmdlet AsJob ondersteunt, raadpleegt u de referentiedocumentatie. Voor de parameter AsJob hoeft automatisch opslaan van context niet te worden ingeschakeld.
U kunt de status van een actieve taak bekijken met de cmdlet Get-Job. Als u de uitvoer van een taak tot nu toe wilt ophalen, gebruikt u de cmdlet Receive-Job.
Als u op afstand de voortgang van een bewerking in Azure wilt bekijken, gebruikt u de cmdlets Get
die horen bij het type resource dat door de taak wordt bewerkt:
$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