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. Mithilfe von PowerShell-Aufträgen können Sie Cmdlets im Hintergrund ausführen oder mehrere Aufgaben in Azure gleichzeitig in einer einzigen PowerShell-Sitzung ausführen.

Dieser Artikel enthält eine kurze Übersicht darüber, wie Sie Azure PowerShell-Cmdlets als PowerShell-Aufträge ausführen und den Abschluss überprüfen. Das Ausführen von Befehlen in Azure PowerShell erfordert die Verwendung von Azure PowerShell-Kontexten, die in Azure-Kontexten und Anmeldeinformationenausführlich behandelt werden. Weitere Informationen zu PowerShell-Aufträgen finden Sie unter Informationen zu Aufträgen.

Azure-Kontexte mit PowerShell-Aufträgen

PowerShell-Aufträge werden als separate Prozesse ohne verbundene PowerShell-Sitzung ausgeführt, sodass Ihre Azure-Anmeldeinformationen an sie übergeben werden müssen. Anmeldeinformationen werden als Azure-Kontextobjekte mit einer der folgenden Methoden ü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 einem beliebigen Azure PowerShell Cmdlet bereit, das über einen Parameter AzContext 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. Dieser Schalter startet das Cmdlet automatisch als PowerShell-Job unter Verwendung des aktiven Azure-Kontexts.

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

    Ob ein Cmdlet AsJob unterstützt, erfahren Sie in der zugehörigen Referenzdokumentation. Für den Parameter AsJob muss die automatische Kontextspeicherung nicht aktiviert sein.

Der Status eines aktiven Auftrags kann mithilfe des Cmdlets Get-Job überprüft werden. Wenn Sie die bisherige Ausgabe eines Auftrags abrufen möchten, verwenden Sie das Cmdlet Receive-Job.

Wenn Sie den Fortschritt eines Vorgangs remote in Azure überprüfen möchten, verwenden Sie die Cmdlets vom Typ Get für die Art der Ressource, die durch den Auftrag geändert wird:

$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

Weitere Informationen