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

Da von Azure PowerShell eine Verbindung mit einer Azure-Cloud hergestellt und auf Antworten gewartet werden muss, wird Ihre PowerShell-Sitzung durch die meisten dieser Cmdlets blockiert, bis eine Antwort von der Cloud empfangen wird. Mithilfe von PowerShell-Aufträgen können Sie Cmdlets im Hintergrund ausführen oder gleichzeitig mehrere Azure-Aufgaben in einer einzelnen PowerShell-Sitzung erledigen.

Dieser Artikel enthält eine kurze Übersicht über das Ausführen von Azure PowerShell-Cmdlets als PowerShell-Aufträge sowie über das Überprüfen des Abschlusses. Wenn Sie Befehle in Azure PowerShell ausführen möchten, müssen Sie Azure PowerShell-Kontexte verwenden. Diese werden unter Azure-Kontexte und -Anmeldeinformationen ausführlich behandelt. Weitere Informationen zu PowerShell-Aufträgen finden Sie unter Informationen zu Aufträgen.

Azure-Kontexte mit PowerShell-Aufträgen

Da PowerShell-Aufträge als separate Prozesse ohne angefügte PowerShell-Sitzung ausgeführt werden, müssen Ihre Azure-Anmeldeinformationen an sie weitergegeben werden. Anmeldeinformationen werden mithilfe einer der folgenden Methoden als Azure-Kontextobjekte übergeben:

  • Automatische Kontextpersistenz: Die Kontextpersistenz ist standardmäßig aktiviert und behält Ihre Anmeldeinformationen über mehrere Sitzungen hinweg bei. Bei aktivierter Kontextpersistenz 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
    }
    

    Bei deaktivierter Kontextpersistenz wird der Parameter AzContext benötigt.

  • Verwendung des Parameters AsJob, der von einigen Azure PowerShell-Cmdlets bereitgestellt wird. Dieser Schalter startet das Cmdlet automatisch als PowerShell-Auftrag und verwendet dabei den aktiven Azure-Kontext:

    $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