Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Cmdlets können ihre Aktion intern oder als Windows PowerShell-Hintergrundauftragausführen. Wenn ein Cmdlet als Hintergrundauftrag ausgeführt wird, erfolgt die Arbeit asynchron in einem eigenen Thread getrennt vom Pipelinethread, den das Cmdlet verwendet. Wenn ein Cmdlet als Hintergrundauftrag ausgeführt wird, wird die Eingabeaufforderung aus Der Benutzerperspektive sofort zurückgegeben, auch wenn der Auftrag eine längere Zeit in Anspruch nimmt, und der Benutzer kann während der Ausführung des Auftrags ohne Unterbrechung fortfahren.
Hintergrundaufträge, untergeordnete Aufträge und das Auftrags-Repository
Das Auftragsobjekt, das von den Cmdlets zurückgegeben wird, die Hintergrundaufträge unterstützen, definiert den Auftrag. (Das cmdlet Startauftrag gibt auch ein Auftragsobjekt zurück.) Der Name des Auftrags, ein Bezeichner, der zum Angeben des Auftrags, der Statusinformationen und der untergeordneten Aufträge verwendet wird, sind in dieser Definition enthalten. Der Auftrag führt keines der Arbeiten aus. Jeder Hintergrundauftrag verfügt über mindestens einen untergeordneten Job, da der untergeordnete Auftrag die eigentliche Arbeit ausführt. Wenn Sie ein Cmdlet ausführen, damit die Arbeit als Hintergrundauftrag ausgeführt wird, muss das Cmdlet den Auftrag und die untergeordneten Aufträge zu einem gemeinsamen Repository hinzufügen, das als Auftrags-Repositorybezeichnet wird.
Weitere Informationen dazu, wie Hintergrundaufträge in der Befehlszeile behandelt werden, finden Sie in den folgenden Themen:
Schreiben eines Cmdlets, das als Hintergrundauftrag ausgeführt wird
Um ein Cmdlet zu schreiben, das als Hintergrundauftrag ausgeführt werden kann, müssen Sie die folgenden Aufgaben ausführen:
Definieren Sie einen
asJobSwitch-Parameter, damit der Benutzer entscheiden kann, ob das Cmdlet als Hintergrundauftrag ausgeführt werden soll.Erstellen Sie ein Objekt, das von der System.Management.Automation.Job Klasse abgeleitet ist. Dieses Objekt kann ein benutzerdefiniertes Auftragsobjekt oder ein Auftragsobjekt sein, das von Windows PowerShell bereitgestellt wird, z. B. ein System.Management.Automation.PSEventJob-Objekt.
Fügen Sie in einer Datensatzverarbeitungsmethode eine
if-Anweisung hinzu, die erkennt, ob das Cmdlet als Hintergrundauftrag ausgeführt werden soll.Implementieren Sie für benutzerdefinierte Auftragsobjekte die Auftragsklasse.
Gibt die entsprechenden Objekte zurück, je nachdem, ob das Cmdlet als Hintergrundauftrag ausgeführt wird.
Ein Codebeispiel finden Sie unter How to Support Jobs.
APIs für Hintergrund Job-Related
Die folgenden APIs werden von Windows PowerShell bereitgestellt, um Hintergrundaufträge zu verwalten.
System.Management.Automation.Job Leitet benutzerdefinierte Auftragsobjekte ab. Dies ist eine abstrakte Klasse.
System.Management.Automation.JobRepository Verwaltet und stellt Informationen zu den aktuellen aktiven Hintergrundaufträgen bereit.
System.Management.Automation.JobState Definiert den Status des Hintergrundauftrags. Zu den Zuständen gehören "Started", "Running" und "Stopped".
System.Management.Automation.JobStateInfo Stellt Informationen zum Status eines Hintergrundauftrags bereit, und wenn die letzte Zustandsänderung durch einen Fehler verursacht wurde, hat der Auftrag den aktuellen Zustand eingegeben.
System.Management.Automation.JobStateEventArgs Stellt die Argumente für ein Ereignis bereit, das ausgelöst wird, wenn sich ein Hintergrundauftrag ändert.
Windows PowerShell-Auftrags-Cmdlets
Die folgenden Cmdlets werden von Windows PowerShell zum Verwalten von Hintergrundaufträgen bereitgestellt.
Ruft Windows PowerShell-Hintergrundaufträge ab, die in der aktuellen Sitzung ausgeführt werden.
Ruft die Ergebnisse der Windows PowerShell-Hintergrundaufträge in der aktuellen Sitzung ab.
Löscht einen Windows PowerShell-Hintergrundauftrag.
Startet einen Windows PowerShell-Hintergrundauftrag.
Beendet einen Windows PowerShell-Hintergrundauftrag.
Unterdrückt die Eingabeaufforderung, bis eine oder alle Windows PowerShell-Hintergrundaufträge, die in der Sitzung ausgeführt werden, abgeschlossen sind.