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 nach Abschluss suchen. 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 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 Von einigen Azure PowerShell-Cmdlets bereitgestellten AsJob-Parameter . 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 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 in Azure zu überprüfen, verwenden Sie die Get Cmdlets, die dem Typ der Ressource zugeordnet sind, die vom 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

Siehe auch