Delen via


Azure PowerShell-cmdlets uitvoeren in PowerShell-jobs

Azure PowerShell is afhankelijk van het maken van verbinding met een Azure-cloud en wachten op antwoorden. De meeste van deze cmdlets blokkeren uw PowerShell-sessie totdat ze een antwoord van de cloud krijgen. 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-opdrachten voor meer informatie over PowerShell-opdrachten.

Azure-contexten met PowerShell-opdrachten

PowerShell-taken worden uitgevoerd als afzonderlijke processen zonder een gekoppelde PowerShell-sessie, zodat uw Azure-referenties met hen moeten worden gedeeld. Referenties worden doorgegeven als Azure-contextobjecten met behulp van een van de volgende methoden:

  • Automatische contextpersistentie. Contextpersistentie is standaard ingeschakeld en behoudt uw aanmeldingsgegevens voor meerdere sessies. Als 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 parameter AzContext vereist.

  • Gebruik de AsJob parameter die wordt geleverd 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. Om de uitvoer van een taak tot nu toe te ontvangen, gebruikt u de Receive-Job cmdlet.

Als u de voortgang van een bewerking op afstand in Azure wilt controleren, gebruikt u de Get cmdlets die zijn gekoppeld aan het type resource dat door de taak wordt gewijzigd:

$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

Zie ook