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
Azure PowerShell