Remove-Job
Löscht einen PowerShell-Hintergrundauftrag.
Syntax
Remove-Job
[-Force]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das cmdlet Remove-Job
löscht PowerShell-Hintergrundaufträge, die vom Cmdlet Start-Job
oder von Cmdlets wie Invoke-Command
gestartet wurden, die den parameter AsJob unterstützen.
Sie können Remove-Job
verwenden, um alle Aufträge zu löschen oder ausgewählte Aufträge zu löschen. Die Aufträge werden durch ihren Namen, ID, Instanz-ID, Commandoder Stateidentifiziert. Oder ein Auftragsobjekt kann an Remove-Job
an die Pipeline gesendet werden. Ohne Parameter oder Parameterwerte hat Remove-Job
keine Auswirkung.
Seit PowerShell 3.0 können Remove-Job
benutzerdefinierte Auftragstypen löschen, z. B. geplante Aufträge und Workflowaufträge. Beispielsweise löscht Remove-Job
den geplanten Auftrag, alle Instanzen des geplanten Auftrags auf dem Datenträger und die Ergebnisse aller ausgelösten Auftragsinstanzen.
Wenn Sie versuchen, einen ausgeführten Auftrag zu löschen, schlägt Remove-Job
fehl. Verwenden Sie das Cmdlet Stop-Job
, um einen ausgeführten Auftrag zu beenden. Oder verwenden Sie Remove-Job
mit dem Parameter Force, um einen ausgeführten Auftrag zu löschen.
Aufträge verbleiben im globalen Auftragscache, bis Sie den Hintergrundauftrag löschen oder die PowerShell-Sitzung schließen.
Beispiele
Beispiel 1: Löschen eines Auftrags mithilfe seines Namens
In diesem Beispiel wird eine Variable und die Pipeline verwendet, um einen Auftrag anhand des Namens zu löschen.
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
verwendet den Parameter Name, um den Auftrag anzugeben, BatchJob. Das Auftragsobjekt wird in der variablen $batch
gespeichert. Das Objekt in $batch
wird an Remove-Job
weitergeleitet.
Eine Alternative besteht darin, den Parameter Job zu verwenden, z. B. Remove-Job -Job $batch
.
Beispiel 2: Löschen aller Aufträge in einer Sitzung
In diesem Beispiel werden alle Aufträge in der aktuellen PowerShell-Sitzung gelöscht.
Get-job | Remove-Job
Get-Job
ruft alle Aufträge in der aktuellen PowerShell-Sitzung ab. Die Auftragsobjekte werden an Remove-Job
an die Pipeline gesendet.
Beispiel 3: Löschen von NotStarted-Aufträgen
In diesem Beispiel werden alle Aufträge aus der aktuellen PowerShell-Sitzung gelöscht, die noch nicht gestartet wurden.
Remove-Job -State NotStarted
Remove-Job
verwendet den Parameter State, um den Auftragsstatus anzugeben.
Beispiel 4: Löschen von Aufträgen mithilfe eines Anzeigenamens
In diesem Beispiel werden alle Aufträge aus der aktuellen Sitzung mit Anzeigenamen gelöscht, die mit Batch-*enden, einschließlich der ausgeführten Aufträge.
Remove-Job -Name *batch -Force
Remove-Job
verwendet den Parameter Name, um ein Auftragsnamenmuster anzugeben. Das Muster enthält das Sternchen (*
) zum Suchen aller Auftragsnamen, die mit Batch-enden. Der parameter Force löscht aufträge, die ausgeführt werden.
Beispiel 5: Löschen eines Auftrags, der von Invoke-Command erstellt wurde
In diesem Beispiel wird ein Auftrag entfernt, der auf einem Remotecomputer mit Invoke-Command
mit dem parameter AsJob gestartet wurde.
Da im Beispiel der parameter AsJob verwendet wird, wird das Auftragsobjekt auf dem lokalen Computer erstellt. Der Auftrag wird jedoch auf einem Remotecomputer ausgeführt. Daher verwenden Sie lokale Befehle, um den Auftrag zu verwalten.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
führt einen Auftrag auf dem Server01 Computer aus. Der parameter AsJob führt den ScriptBlock als Hintergrundauftrag aus. Das Auftragsobjekt wird in der variablen $job
gespeichert. Das $job
Variablenobjekt wird an Remove-Job
weitergeleitet.
Beispiel 6: Löschen eines Auftrags, der von Invoke-Command und Start-Job erstellt wurde
In diesem Beispiel wird gezeigt, wie Sie einen Auftrag auf einem Remotecomputer entfernen, der mit Invoke-Command
zum Ausführen Start-Job
gestartet wurde. Das Auftragsobjekt wird auf dem Remotecomputer erstellt, und Remotebefehle werden zum Verwalten des Auftrags verwendet. Beim Ausführen eines Remote-Start-Job
-Befehls ist eine dauerhafte Verbindung erforderlich.
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}
New-PSSession
erstellt eine PSSession, eine dauerhafte Verbindung, mit dem Server01 Computer. Die Verbindung wird in der variablen $S
gespeichert.
Invoke-Command
stellt eine Verbindung mit der in $S
gespeicherten Sitzung hergestellt. Der ScriptBlock- verwendet Start-Job
zum Starten eines Remoteauftrags. Der Auftrag führt einen Get-Process
Befehl aus und verwendet den Parameter Name, um einen Anzeigeauftragsnamen anzugeben, MyJob.
Invoke-Command
verwendet die $S
-Sitzung und führt Remove-Job
aus. Der parameter Name gibt an, dass der Auftrag MyJob gelöscht wird.
Beispiel 7: Löschen eines Auftrags mithilfe seiner InstanceId
In diesem Beispiel wird ein Auftrag basierend auf dessen InstanceId-entfernt.
$job = Start-Job -ScriptBlock {Get-Process PowerShell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-Process PowerShell
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : ad02b942-8007-4407-87f3-d23e71955872
Id : 3
Name : Job3
ChildJobs : {Job4}
PSBeginTime : 7/26/2019 11:36:56
PSEndTime : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
startet einen Hintergrundauftrag, und das Auftragsobjekt wird in der variablen $job
gespeichert.
Das Objekt in $job
wird an Format-List
weitergeleitet. Der parameter Property verwendet ein Sternchen (*
), um anzugeben, dass alle Eigenschaften des Objekts in einer Liste angezeigt werden.
Remove-Job
verwendet den parameter InstanceId, um den zu löschenden Auftrag anzugeben.
Parameter
-Command
Löscht Aufträge, die die angegebenen Wörter im Befehl enthalten. Sie können ein durch Trennzeichen getrenntes Array eingeben.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Confirm
Fordert Sie zur Bestätigung auf, bevor Remove-Job
ausgeführt wird.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Filter
Löscht Aufträge, die alle Bedingungen erfüllen, die in der zugehörigen Hashtabelle erstellt wurden. Geben Sie eine Hashtabelle ein, in der die Schlüssel Auftragseigenschaften und die Werte Auftragseigenschaftswerte sind.
Dieser Parameter funktioniert nur für benutzerdefinierte Auftragstypen, z. B. Workflowaufträge und geplante Aufträge. Es funktioniert nicht für Standard-Hintergrundaufträge, z. B. für die, die mit dem Start-Job
erstellt wurden.
Dieser Parameter wird in PowerShell 3.0 eingeführt.
Typ: | Hashtable |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Force
Löscht einen Auftrag, auch wenn der Status des Auftrags Ausführenist. Wenn der Parameter Force nicht angegeben ist, löscht Remove-Job
keine ausgeführten Aufträge.
Typ: | SwitchParameter |
Aliase: | F |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Id
Löscht Hintergrundaufträge mit der angegebenen ID. Sie können ein durch Trennzeichen getrenntes Array eingeben. Die -ID des Auftrags ist eine eindeutige ganze Zahl, die einen Auftrag innerhalb der aktuellen Sitzung identifiziert.
Um die -IDeines Auftrags zu finden, verwenden Sie Get-Job
ohne Parameter.
Typ: | Int32[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-InstanceId
Löscht Aufträge mit der angegebenen InstanceId-. Sie können ein durch Trennzeichen getrenntes Array eingeben. Eine InstanceId- ist eine eindeutige GUID, die einen Auftrag identifiziert.
Um die InstanceId-eines Auftrags zu finden, verwenden Sie Get-Job
.
Typ: | Guid[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Job
Gibt die zu löschenden Aufträge an. Geben Sie eine Variable ein, die die Aufträge enthält, oder einen Befehl, der die Aufträge abruft. Sie können ein durch Trennzeichen getrenntes Array eingeben.
Sie können Auftragsobjekte an Remove-Job
senden.
Typ: | Job[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Name
Löscht Nur Aufträge mit dem angegebenen Anzeigenamen. Wildcards sind zulässig. Sie können ein durch Trennzeichen getrenntes Array eingeben.
Anzeigenamen für Aufträge sind nicht garantiert eindeutig, auch innerhalb einer PowerShell-Sitzung. Verwenden Sie die parameter WhatIf und Confirm parameter when you delete files by name.
Typ: | String[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
-State
Löscht Nur Aufträge mit dem angegebenen Zustand. Um Aufträge mit dem Status Runningzu löschen, verwenden Sie den Parameter Force.
Akzeptierte Werte:
- AtBreakpoint
- Gesperrt
- Abgeschlossen
- Entfernt
- Misslungen
- NotStarted
- Ausgeführte
- Angehalten
- Anhaltend
- Ausgesetzt
- Aufschiebend
Typ: | JobState |
Zulässige Werte: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was passiert, wenn Remove-Job
ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können ein Job--Objekt an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück.
Hinweise
PowerShell enthält die folgenden Aliase für Remove-Job
:
- Alle Plattformen:
rjb
Ein PowerShell-Auftrag erstellt einen neuen Prozess. Nach Abschluss des Auftrags wird der Prozess beendet. Wenn Remove-Job
ausgeführt wird, wird der Status des Auftrags entfernt.
Wenn ein Auftrag vor abschluss beendet wird und sein Prozess nicht beendet wurde, wird der Prozess forcibly beendet.