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 Remove-Job
Cmdlet löscht PowerShell-Hintergrundaufträge, die Start-Job
vom Cmdlet oder von Cmdlets wie Invoke-Command
gestartet wurden, die den AsJob-Parameter unterstützen.
Sie können verwenden Remove-Job
, um alle Aufträge zu löschen oder ausgewählte Aufträge zu löschen. Die Aufträge werden anhand ihres Namens, der ID, der Instanz-ID, des Befehls oder des Status identifiziert. Oder ein Auftragsobjekt kann in der Pipeline an Remove-Job
gesendet werden. Ohne Parameter oder Parameterwerte hat Remove-Job
keine Auswirkung.
Seit PowerShell 3.0 Remove-Job
kann benutzerdefinierte Auftragstypen wie geplante Aufträge und Workflowaufträge gelöscht werden. Löscht beispielsweise 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, Remove-Job
schlägt fehl. Verwenden Sie das Stop-Job
Cmdlet, um einen ausgeführten Auftrag zu beenden. Oder verwenden Sie Remove-Job
mit dem Force-Parameter , 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 werden 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 BatchJob anzugeben. Das Auftragsobjekt wird in der $batch
Variablen gespeichert. Das -Objekt in $batch
wird an die Pipeline Remove-Job
gesendet.
Eine Alternative besteht darin, den Job-Parameter 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 in der Pipeline an Remove-Job
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 State-Parameter, um den Auftrag status 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 (*
) platzhalter, um alle Auftragsnamen zu finden, die mit batch enden. Der Force-Parameter löscht ausgeführte Aufträge.
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
dem AsJob-Parameter gestartet wurde.
Da im Beispiel der AsJob-Parameter verwendet wird, wird das Auftragsobjekt auf dem lokalen Computer erstellt. Der Auftrag wird jedoch auf einem Remotecomputer ausgeführt. Folglich 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 Computer Server01 aus. Der AsJob-Parameter führt den ScriptBlock als Hintergrundauftrag aus. Das Auftragsobjekt wird in der $job
Variablen gespeichert. Das $job
Variablenobjekt wird in der Pipeline an Remove-Job
gesendet.
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 mithilfe Invoke-Command
von gestartet wurde, um auszuführen Start-Job
. Das Auftragsobjekt wird auf dem Remotecomputer erstellt, und zum Verwalten des Auftrags werden Remotebefehle verwendet. Beim Ausführen eines Remotebefehls Start-Job
ist eine permanente 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 permanente Verbindung, mit dem Server01-Computer . Die Verbindung wird in der $S
Variablen gespeichert.
Invoke-Command
stellt eine Verbindung mit der in gespeicherten $S
Sitzung her. Der ScriptBlock verwendet Start-Job
, um einen Remoteauftrag zu starten. Der Auftrag führt einen Get-Process
Befehl aus und verwendet den Parameter Name , um den Anzeigeauftragsnamen MyJob anzugeben.
Invoke-Command
verwendet die $S
Sitzung und führt aus Remove-Job
. Der Parameter Name gibt an, dass der Auftrag mit dem Namen MyJob gelöscht wird.
Beispiel 7: Löschen eines Auftrags mithilfe seiner InstanceId
In diesem Beispiel wird ein Auftrag basierend auf seiner 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 $job
Variablen gespeichert.
Das -Objekt in $job
wird an die Pipeline Format-List
gesendet. Der Property-Parameter verwendet ein Sternchen (*
), um anzugeben, dass alle Eigenschaften des Objekts in einer Liste angezeigt werden.
Remove-Job
verwendet den InstanceId-Parameter , um den zu löschenden Auftrag anzugeben.
Parameter
-Command
Löscht Aufträge, die die im Befehl angegebenen Wörter enthalten. Sie können ein durch Trennzeichen getrenntes Array eingeben.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Fordert Sie zur Bestätigung auf, bevor Remove-Job
ausgeführt wird.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Löscht Aufträge, die alle In der zugeordneten Hashtabelle festgelegten Bedingungen erfüllen. Geben Sie eine Hashtabelle ein, in der die Schlüssel Auftragseigenschaften und die Werte Werte der Auftragseigenschaften sind.
Dieser Parameter funktioniert nur mit benutzerdefinierten Auftragstypen, z. B. Workflowaufträgen und geplanten Aufträgen. Es funktioniert nicht für Standard-Hintergrundaufträge, z. B. solche, die Start-Job
mit erstellt wurden.
Dieser Parameter wird in Windows PowerShell 3.0 eingeführt.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Löscht einen Auftrag auch dann, wenn der Status des Auftrags Wird ausgeführt lautet. Wenn der Force-Parameter nicht angegeben ist, Remove-Job
werden ausgeführte Aufträge nicht gelöscht.
Type: | SwitchParameter |
Aliases: | F |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 ID eines Auftrags zu ermitteln, verwenden Sie Get-Job
ohne Parameter.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 suchen, verwenden Sie Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Gibt die zu löschenden Aufträge an. 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 ein durch Trennzeichen getrenntes Array eingeben.
Sie können Auftragsobjekte in der Pipeline an Remove-Job
senden.
Type: | Job[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Löscht nur Aufträge mit dem angegebenen Anzeigenamen. Platzhalter sind zulässig. Sie können ein durch Trennzeichen getrenntes Array eingeben.
Anzeigenamen für Aufträge sind nicht garantiert eindeutig, auch nicht innerhalb einer PowerShell-Sitzung. Verwenden Sie die Parameter WhatIf und Confirm , wenn Sie Dateien nach Name löschen.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-State
Löscht nur Aufträge mit dem angegebenen Zustand. Verwenden Sie den Force-Parameter, um Aufträge mit dem Status Running zu löschen.
Zulässige Werte:
- AtBreakpoint
- Blockiert
- Abgeschlossen
- Getrennt
- Fehler
- NotStarted
- Wird ausgeführt
- Beendet
- Wird beendet
- Ausgesetzt
- Wird angehalten
Type: | JobState |
Accepted values: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Zeigt an, was bei Remove-Job
Ausführungen passieren würde. 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
Sie können ein Job-Objekt an dieses Cmdlet übergeben.
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. Wenn der Auftrag abgeschlossen ist, wird der Prozess beendet. Wenn Remove-Job
ausgeführt wird, wird der Status des Auftrags entfernt.
Wenn ein Auftrag vor Abschluss beendet wird und der Prozess nicht beendet wurde, wird der Prozess erzwungen beendet.