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