Stop-Job
Beendet einen PowerShell-Hintergrundauftrag.
Syntax
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Stop-Job
Cmdlet beendet die laufenden PowerShell-Hintergrundaufträge. Sie können dieses Cmdlet verwenden, um alle Aufträge zu beenden oder ausgewählte Aufträge basierend auf ihrem Namen, ihrer ID, instance ID oder ihrem Zustand zu beenden oder indem Sie ein Auftragsobjekt an Stop-Job
übergeben.
Sie können verwenden Stop-Job
, um Hintergrundaufträge zu beenden, z. B. solche, die mit dem Start-Job
Cmdlet oder dem AsJob-Parameter eines beliebigen Cmdlets gestartet wurden. Wenn Sie einen Hintergrundauftrag beenden, schließt PowerShell alle Aufgaben ab, die in dieser Auftragswarteschlange ausstehen, und beendet dann den Auftrag. Keine neuen Vorgänge werden in die Warteschlange hinzugefügt, nachdem dieser Befehl gesendet wird.
Mit diesem Cmdlet werden die Hintergrundaufträge nicht gelöscht. Verwenden Sie das Remove-Job
Cmdlet, um einen Auftrag zu löschen.
Ab Windows PowerShell 3.0 Stop-Job
werden auch benutzerdefinierte Auftragstypen wie WorkflowJobs und Instanzen von ScheduledJobs beendet. Um das Beenden eines Auftrags mit dem benutzerdefinierten Auftragstyp zu aktivieren Stop-Job
, importieren Sie das Modul, das den benutzerdefinierten Auftragstyp unterstützt, in die Sitzung, bevor Sie einen Stop-Job
Befehl ausführen, entweder mithilfe des Import-Module
Cmdlets oder mithilfe eines Cmdlets im Modul. Informationen zu einem bestimmten benutzerdefinierten Auftragstyp finden Sie in der Dokumentation der Funktion „Benutzerdefinierte Auftragstypen“.
Beispiele
Beispiel 1: Beenden eines Auftrags auf einem Remotecomputer mit Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
In diesem Beispiel wird gezeigt, wie Sie mit dem Stop-Job
Cmdlet einen Auftrag beenden, der auf einem Remotecomputer ausgeführt wird.
Da der Auftrag mit dem Invoke-Command
Cmdlet gestartet wurde, um einen Start-Job
Befehl remote auszuführen, wird das Auftragsobjekt auf dem Remotecomputer gespeichert. Sie müssen einen anderen Invoke-Command
Befehl verwenden, um einen Stop-Job
Befehl remote auszuführen. Weitere Informationen zu Remotehintergrundaufträgen finden Sie unter „about_Remote_Jobs“.
Der erste Befehl erstellt eine PowerShell-Sitzung (PSSession) auf dem Server01-Computer und speichert dann das Sitzungsobjekt in der $s
Variablen. Der Befehl verwendet die Anmeldeinformationen eines Domänenadministrators.
Der zweite Befehl verwendet das Invoke-Command
Cmdlet, um einen Start-Job
Befehl in der Sitzung auszuführen. Der Befehl im Auftrag ruft alle Ereignisse im Systemereignisprotokoll ab. Das resultierende Auftragsobjekt wird in der $j
Variablen gespeichert.
Mit dem dritten Befehl wird der Auftrag beendet. Es verwendet das Invoke-Command
Cmdlet, um einen Stop-Job
Befehl in der PSSession auf Server01 auszuführen. Da die Auftragsobjekte in $j
gespeichert werden, bei der es sich um eine Variable auf dem lokalen Computer handelt, verwendet der Befehl den Using-Bereichsmodifizierer, um sich als lokale Variable zu identifizieren.$j
Weitere Informationen zum Verwenden des Bereichsmodifizierers finden Sie unter about_Remote_Variables.
Wenn der Befehl abgeschlossen ist, wird der Auftrag beendet, und die PSSession in $s
steht zur Verwendung zur Verfügung.
Beispiel 2: Beenden eines Hintergrundauftrags
Stop-Job -Name "Job1"
Mit diesem Befehl wird der Job1
Hintergrundauftrag beendet.
Beispiel 3: Beenden mehrerer Hintergrundaufträge
Stop-Job -Id 1, 3, 4
Mit diesem Befehl werden drei Aufträge beendet. Sie identifiziert sie anhand ihrer IDs.
Beispiel 4: Beenden aller Hintergrundaufträge
Get-Job | Stop-Job
Mit diesem Befehl werden alle Hintergrundaufträge im in der aktuellen Sitzung beendet.
Beispiel 5: Beenden aller blockierten Hintergrundaufträge
Stop-Job -State Blocked
Dieser Befehl beendet alle Aufträge, die blockiert sind.
Beispiel 6: Beenden eines Auftrags durch instance ID
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -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
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
Diese Befehle zeigen, wie ein Auftrag basierend auf seiner InstanceID beendet wird.
Der erste Befehl verwendet das Get-Job
Cmdlet, um die Aufträge in der aktuellen Sitzung abzurufen. Der Befehl verwendet einen Pipelineoperator (|
), um die Aufträge an einen Format-Table
Befehl zu senden, der eine Tabelle mit den angegebenen Eigenschaften der einzelnen Aufträge anzeigt. Die Tabelle enthält die InstanceID jedes Auftrags. Er verwendet eine berechnete Eigenschaft, um den Auftragsstatus anzuzeigen.
Der zweite Befehl verwendet einen Stop-Job
Befehl mit dem Parameter InstanceID , um einen ausgewählten Auftrag zu beenden.
Beispiel 7: Beenden eines Auftrags auf einem Remotecomputer
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet get-eventlog system
In diesem Beispiel wird gezeigt, wie Sie mit dem Stop-Job
Cmdlet einen Auftrag beenden, der auf einem Remotecomputer ausgeführt wird.
Da der Auftrag mit dem AsJob-Parameter des Invoke-Command
Cmdlets gestartet wurde, befindet sich das Job-Objekt auf dem lokalen Computer, obwohl der Auftrag auf dem Remotecomputer ausgeführt wird. Daher können Sie einen lokalen Stop-Job
Befehl verwenden, um den Auftrag zu beenden.
Der erste Befehl verwendet das Invoke-Command
Cmdlet, um einen Hintergrundauftrag auf dem Server01-Computer zu starten. Der Befehl verwendet den AsJob-Parameter, um den Remotebefehl als Hintergrundauftrag auszuführen.
Dieser Befehl gibt ein Auftragsobjekt zurück, das dasselbe Auftragsobjekt ist, das das Start-Job
Cmdlet zurückgibt.
Der Befehl speichert das Auftragsobjekt in der $j
Variablen.
Der zweite Befehl verwendet einen Pipelineoperator, um den Auftrag in der $j
Variablen an zu Stop-Job
senden. Der Befehl verwendet den PassThru-Parameter , um Stop-Job
ein Auftragsobjekt zurückzugeben. Die Auftragsobjektanzeige bestätigt, dass der Status des Auftrags beendet ist.
Weitere Informationen zu Remotehintergrundaufträgen finden Sie unter about_Remote_Jobs.
Parameter
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Gibt eine Hashtabelle mit Bedingungen an. Dieses Cmdlet beendet Aufträge, die jede Bedingung erfüllen. Geben Sie eine Hashtabelle ein, in der die Schlüssel Auftragseigenschaften und die Werte Werte der Auftragseigenschaften sind.
Dieser Parameter funktioniert nur für benutzerdefinierte Auftragstypen wie WorkflowJobs und ScheduledJobs. Sie funktioniert nicht bei Standard-Hintergrundaufträgen, z. B. bei aufträgen, die mithilfe des Start-Job
Cmdlets erstellt werden.
Weitere Informationen zur Unterstützung für diesen Parameter finden Sie unter dem Hilfethema für den Auftragstyp.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Id
Gibt die IDs von Aufträgen an, die dieses Cmdlet beendet. Der Standardwert ist alle Aufträge in der aktuellen Sitzung.
Die ID ist eine ganze Zahl, die den Auftrag in der aktuellen Sitzung eindeutig identifiziert. Es ist einfacher zu merken und einzugeben als die instance-ID, aber sie ist nur in der aktuellen Sitzung eindeutig. Sie können eine oder mehrere IDs durch Kommas getrennt eingeben. Geben Sie ein, Get-Job
um die ID eines Auftrags zu suchen.
Type: | Int32[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Gibt die instance-IDs von Aufträgen an, die dieses Cmdlet beendet. Standardmäßig werden alle Aufträge fortgesetzt.
Eine Instanz-ID ist eine GUID, die den Auftrag auf dem Computer eindeutig identifiziert. Um die instance-ID eines Auftrags zu ermitteln, verwenden Sie Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Gibt die Aufträge an, die dieses Cmdlet beendet. Geben Sie eine Variable ein, die entweder die Aufträge oder einen Befehl enthält, durch den die Aufträge abgerufen werden. Sie können auch einen Pipelineoperator verwenden, um Aufträge an das Stop-Job
Cmdlet zu übermitteln. Standardmäßig löscht alle Aufträge, Stop-Job
die in der aktuellen Sitzung gestartet wurden.
Type: | Job[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Gibt Anzeigenamen von Aufträgen an, die dieses Cmdlet beendet. Geben Sie die Auftragsnamen in einer durch Trennzeichen getrennten Liste ein, oder verwenden Sie Denkplatzzeichen (*
), um ein Auftragsnamenmuster einzugeben. Standardmäßig werden alle Aufträge beendet, Stop-Job
die in der aktuellen Sitzung erstellt wurden.
Da der Anzeigename nicht garantiert eindeutig ist, verwenden Sie beim Beenden von Aufträgen nach Name die Parameter WhatIf und Confirm .
Type: | String[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
Gibt ein Objekt zurück, das das Element darstellt, mit dem Sie arbeiten. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-State
Gibt einen Auftragsstatus an. Dieses Cmdlet beendet nur Aufträge im angegebenen Zustand. Zulässige Werte für diesen Parameter:
NotStarted
Running
Completed
Failed
Stopped
Blocked
Suspended
Disconnected
Suspending
Stopping
Weitere Informationen zu Auftragszuständen finden Sie unter JobState Enumeration.
Type: | JobState |
Accepted values: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
System.Management.Automation.RemotingJob
Sie können ein Auftragsobjekt an dieses Cmdlet weiterleiten.
Ausgaben
None, System.Management.Automation.PSRemotingJob
Dieses Cmdlet gibt ein Auftragsobjekt zurück, wenn Sie den PassThru-Parameter angeben. Andernfalls wird von diesem Cmdlet keine Ausgabe generiert.