Freigeben über


Ausführen von Azure PowerShell-Cmdlets in PowerShell-Aufträgen

Azure PowerShell hängt davon ab, eine Verbindung mit einer Azure Cloud herzustellen und auf Antworten zu warten. Daher blockieren die meisten dieser Cmdlets Ihre PowerShell-Sitzung, bis sie eine Antwort aus der Cloud erhalten. Mit PowerShell-Aufträgen können Sie Cmdlets im Hintergrund ausführen oder mehrere Aufgaben auf Azure gleichzeitig in einer einzigen PowerShell-Sitzung ausführen.

In diesem Artikel erhalten Sie einen kurzen Überblick darüber, wie Sie Azure PowerShell-Cmdlets als PowerShell-Jobs ausführen und den Abschluss überprüfen können. Das Ausführen von Befehlen in Azure PowerShell erfordert die Verwendung von Azure PowerShell Kontexten, die in Azure Kontexten und Anmeldeinformationen ausführlich behandelt werden. Weitere Informationen zu PowerShell-Aufträgen finden Sie unter "Informationen zu PowerShell-Aufträgen".

Azure Kontexte mit PowerShell-Aufträgen

PowerShell-Aufträge werden als separate Prozesse ohne angefügte PowerShell-Sitzung ausgeführt, sodass Ihre Azure Anmeldeinformationen für sie freigegeben werden müssen. Anmeldeinformationen werden mit einer der folgenden Methoden als Azure Kontextobjekte übergeben:

  • Automatische Kontextpersistenz. Die Kontextpersistenz ist standardmäßig aktiviert und behält Ihre Anmeldeinformationen in mehreren Sitzungen bei. Wenn die Kontextpersistenz aktiviert ist, wird der aktuelle Azure Kontext an den neuen Prozess übergeben:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • Stellen Sie ein Azure Kontextobjekt mit jedem Azure PowerShell Cmdlet bereit, das über einen AzContextParameter verfügt:

    $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
    }
    

    Wenn die Kontextpersistenz deaktiviert ist, ist der AzContext-Parameter erforderlich.

  • Verwenden Sie den Parameter AsJob, der von einigen Azure PowerShell Cmdlets bereitgestellt wird. Mit diesem Switch wird das Cmdlet automatisch als PowerShell-Auftrag gestartet, wobei der aktive Azure Kontext verwendet wird:

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

    Wenn Sie sehen möchten, ob ein Cmdlet AsJob unterstützt, überprüfen Sie die Referenzdokumentation. Der AsJob-Parameter erfordert keine Aktivierung des kontextautonen Speicherns.

Sie können den Status eines ausgeführten Auftrags mit dem Cmdlet "Get-Job " überprüfen. Verwenden Sie das Cmdlet "Receive-Job", um die Ausgabe aus einem Auftrag abzurufen.

Um den Fortschritt eines Vorgangs remote auf Azure zu überprüfen, verwenden Sie die Cmdlets Get, die dem Vom Auftrag geänderten Ressourcentyp zugeordnet sind:

$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

Siehe auch