Freigeben über


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