Stop-Job
Beendet einen Windows PowerShell-Hintergrundauftrag.
Syntax
Stop-Job [[-InstanceId] <Guid[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Stop-Job [-Job] <Job[]> [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Stop-Job [[-Name] <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Stop-Job [-Id] <Int32[]> [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Stop-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
Beschreibung
Mit dem Cmdlet "Stop-Job" werden Windows PowerShell-Hintergrundaufträge beendet, die gerade ausgeführt werden. Sie können dieses Cmdlet verwenden, um alle Aufträge oder ausgewählte Aufträge anhand von Name, ID, Instanz-ID, Befehl oder Status oder durch das Übergeben eines Auftragsobjekts an Stop-Job zu beenden.
Mit Stop-Job können Sie Aufträge beenden, die mit Start-Job oder mit dem AsJob-Parameter von Invoke-Command gestartet wurden. Wenn Sie einen Hintergrundauftrag beenden, werden alle ausstehenden Aufgaben in der Aufgabenwarteschlange von Windows PowerShell abgeschlossen, und anschließend wird der Auftrag beendet. Nach Senden dieses Befehls werden der Warteschlange keine neuen Aufgaben mehr hinzugefügt.
Mit diesem Cmdlet werden keine Hintergrundaufträge gelöscht. Aufträge können mit Remove-Job gelöscht werden.
Parameter
-Id <Int32[]>
Beendet Aufträge mit den angegebenen IDs. Standardmäßig sind dies alle Aufträge in der aktuellen Sitzung.
Die ID ist eine ganze Zahl, die den Auftrag in der aktuellen Sitzung eindeutig identifiziert. Sie lässt sich leichter merken und eingeben als die InstanceId, ist jedoch nur in der aktuellen Sitzung eindeutig. Sie können eine oder mehrere IDs eingeben (durch Trennzeichen getrennt). Um die ID eines Auftrags zu suchen, geben Sie "Get-Job" ohne Parameter ein.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-InstanceId <Guid[]>
Beendet nur Aufträge mit den angegebenen Instanz-IDs. Standardmäßig sind dies alle Aufträge.
Eine Instanz-ID ist ein GUID, der den Auftrag auf dem Computer eindeutig identifiziert. Um die Instanz-ID eines Auftrags zu suchen, verwenden Sie Get-Job.
Erforderlich? |
false |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-Job <Job[]>
Gibt die zu beendenden Aufträge an. Geben Sie eine Variable mit den Aufträgen oder einen Befehl zum Abrufen der Aufträge ein. Sie können Aufträge auch mit einem Pipelineoperator an das Cmdlet "Stop-Job" senden. Standardmäßig werden mit Stop-Job alle Aufträge gelöscht, die in der aktuellen Sitzung gestartet wurden.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByValue, ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-Name <string[]>
Beendet nur die Aufträge mit den angegebenen Anzeigenamen. Geben Sie die Auftragsnamen in einer durch Trennzeichen getrennten Liste ein, oder geben Sie mit Platzhalterzeichen (*) ein Muster für den Auftragsnamen ein. Standardmäßig werden mit Stop-Job alle Aufträge beendet, die in der aktuellen Sitzung erstellt wurden.
Verwenden Sie den WhatIf-Parameter und den Confirm-Parameter, wenn Sie Aufträge anhand des Namens beenden, da nicht garantiert ist, dass der Anzeigename eindeutig ist.
Erforderlich? |
false |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByPropertyName) |
Platzhalterzeichen akzeptieren? |
true |
-PassThru
Gibt ein Objekt zurück, das den neuen Hintergrundauftrag darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-State <JobState>
Beendet nur Aufträge mit dem angegebenen Status. Gültige Werte sind "NotStarted", "Running", "Completed", "Stopped", "Failed" und "Blocked".
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-Confirm
Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-WhatIf
Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.Management.Automation.RemotingJob Sie können ein Auftragsobjekt über die Pipeline an Stop-Job übergeben. |
Ausgaben |
Keiner oder System.Management.Automation.RemotingJob Wenn Sie den PassThru-Parameter verwenden, wird von Stop-Job ein Auftragsobjekt zurückgegeben. Andernfalls wird von diesem Cmdlet keine Ausgabe generiert. |
Beispiel 1
C:\PS>$s = new-pssession -computername Server01 -credential domain01\admin02
C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog system}}
C:\PS> invoke-command -session $s -scriptblock {param($j) stop-job -job $j} -ArgumentList $j
Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie mit dem Cmdlet "Stop-Job" ein Auftrag beendet wird, der auf einem Remotecomputer ausgeführt wird.
Da der Auftrag mit Invoke-Command gestartet wurde, um einen Start-Job-Befehl remote auszuführen, wird das Auftragsobjekt auf dem Remotecomputer gespeichert, und der Befehl "Stop-Job" muss remote mit einem anderen Invoke-Command-Befehl ausgeführt werden. Weitere Informationen über Remotehintergrundaufträge finden Sie unter "about_Remote_Jobs".
Mit dem ersten Befehl wird eine Windows PowerShell-Sitzung (PSSession) auf dem Computer "Server01" erstellt, und das Sitzungsobjekt wird in der Variablen "$s" gespeichert. Im Befehl werden die Anmeldeinformationen eines Domänenadministrators verwendet.
Im zweiten Befehl wird ein Start-Job-Befehl in der Sitzung mit dem Cmdlet "Invoke-Command" ausgeführt. Mit dem Befehl im Auftrag werden alle Ereignisse im Systemereignisprotokoll abgerufen. Das resultierende Auftragsobjekt wird in der Variablen "$j" gespeichert.
Mit dem dritten Befehl wird der Auftrag beendet. Dabei wird mit dem Cmdlet "Invoke-Command" ein Stop-Job-Befehl in der PSSession auf "Server01" ausgeführt. Da die Auftragsobjekte in $j, einer Variablen auf dem lokalen Computer, gespeichert werden, werden im Befehl die lokalen Variablen mit dem param-Schlüsselwort deklariert, und mit dem ArgumentList-Parameter werden Werte für die Variablen angegeben.
Wenn die Ausführung des Befehls abgeschlossen wird, wird der Auftrag beendet, und die PSSession steht in $s zur Verfügung.
Beispiel 2
C:\PS>stop-job -state failed
Beschreibung
-----------
Mit diesem Befehl werden alle Aufträge mit dem Statuswert "Failed" beendet.
Beispiel 3
C:\PS>stop-job -name job1
Beschreibung
-----------
Mit diesem Befehl wird der Hintergrundauftrag "Job1" beendet.
Beispiel 4
C:\PS>stop-job -id 1, 3, 4
Beschreibung
-----------
Mit diesem Befehl werden drei Aufträge beendet. Die Aufträge werden anhand der IDs identifiziert.
Beispiel 5
C:\PS>get-job | stop-job
Beschreibung
-----------
Mit diesem Befehl werden alle Hintergrundaufträge in der aktuellen Sitzung beendet.
Beispiel 6
C:\PS>stop-job -state blocked
Beschreibung
-----------
Mit diesem Befehl werden alle Aufträge mit dem Auftragsstatus "Blocked" beendet.
Beispiel 7
C:\PS>get-job | format-table ID, Name, Command, @{Label="State";Expression={$_.jobstateinfo.state}}, I
nstanceID -auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
C:\PS> stop-job -instanceid e3bbfed1-9c53-401a-a2c3-a8db34336adf
Beschreibung
-----------
Mit diesen Befehlen wird gezeigt, wie ein Auftrag anhand der Instanz-ID beendet wird.
Im ersten Befehl werden die Aufträge in der aktuellen Sitzung mit einem Get-Job-Befehl abgerufen. Im Befehl werden die Aufträge mit einem Pipelineoperator (|) an einen Format-Table-Befehl gesendet, mit dem eine Tabelle der angegebenen Eigenschaften jedes Auftrags angezeigt wird. Die Tabelle enthält die Instanz-ID aller Aufträge. Der Auftragsstatus wird mithilfe einer berechneten Eigenschaft angezeigt.
Im zweiten Befehl wird ein ausgewählter Auftrag mit einem Stop-Job-Befehl und dem InstanceID-Parameter beendet.
Beispiel 8
C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob
C:\PS> $j | stop-job -passthru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True judithh-tablet get-eventlog system
Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie mit dem Cmdlet "Stop-Job" ein Auftrag beendet wird, der auf einem Remotecomputer ausgeführt wird.
Da der Auftrag mit dem AsJob-Parameter von Invoke-Command gestartet wurde, befindet sich das Auftragsobjekt auf dem lokalen Computer, obwohl der Auftrag auf dem Remotecomputer ausgeführt wird. Sie können den Auftrag daher mit einem lokalen Stop-Job-Befehl beenden.
Im ersten Befehl wird mit dem Cmdlet "Invoke-Command" ein Hintergrundauftrag auf dem Computer "Server01" gestartet. Bei dem Befehl wird der Remotebefehl mithilfe des AsJob-Parameters als Hintergrundauftrag ausgeführt.
Mit diesem Befehl wird das gleiche Auftragsobjekt wie von Start-Job zurückgegeben. Mit dem Befehl wird das Auftragsobjekt in der Variablen "$j" gespeichert.
Im zweiten Befehl wird der Auftrag in der Variablen "$j" mit einem Pipelineoperator an Stop-Job gesendet. Im Befehl wird Stop-Job mit dem PassThru-Parameter angewiesen, ein Auftragsobjekt zurückzugeben. Die Anzeige des Auftragsobjekts bestätigt, dass der Status des Auftrags nun "Stopped" lautet.
Weitere Informationen über Remotehintergrundaufträge finden Sie unter "about_Remote_Jobs".
Siehe auch
Konzepte
about_Jobs
about_Job_Details
about_Remote_Jobs
Start-Job
Get-Job
Receive-Job
Wait-Job
Remove-Job
Invoke-Command