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 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 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 jedem Azure PowerShell-Cmdlet bereit, das einen AzContext-parameter aufweist:

    $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 Switch startet das Cmdlet automatisch als PowerShell-Auftrag unter Verwendung des aktiven Azure-Kontexts:

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

    Wenn Sie überprüfen möchten, ob ein Cmdlet AsJob-unterstützt, lesen 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 bisherige Ausgabe eines Auftrags abzurufen.

Um den Fortschritt eines Vorgangs remote in Azure zu überprüfen, verwenden Sie die Get Cmdlets, 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