Remove-Job
Tar bort ett PowerShell-bakgrundsjobb.
Syntax
Remove-Job
[-Id] <Int32[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Name] <String[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Filter] <Hashtable>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-InstanceId] <Guid[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdleten Remove-Job
tar bort PowerShell-bakgrundsjobb som startades av cmdleten Start-Job
eller av cmdletar, Invoke-Command
till exempel som stöder AsJob-parametern .
Du kan använda Remove-Job
för att ta bort alla jobb eller ta bort markerade jobb. Jobben identifieras med namn, ID, instans-ID, kommando eller tillstånd. Eller så kan ett jobbobjekt skickas nedåt i pipelinen till Remove-Job
. Utan parametrar eller parametervärden Remove-Job
har ingen effekt.
Eftersom PowerShell 3.0 Remove-Job
kan ta bort anpassade jobbtyper, till exempel schemalagda jobb och arbetsflödesjobb. Tar till exempel Remove-Job
bort det schemalagda jobbet, alla instanser av det schemalagda jobbet på disken och resultatet av alla utlösta jobbinstanser.
Om du försöker ta bort ett jobb Remove-Job
som körs misslyckas. Använd cmdleten Stop-Job
för att stoppa ett jobb som körs. Du kan också använda Remove-Job
med parametern Force för att ta bort ett jobb som körs.
Jobben finns kvar i det globala jobbcachen tills du tar bort bakgrundsjobbet eller stänger PowerShell-sessionen.
Exempel
Exempel 1: Ta bort ett jobb med dess namn
I det här exemplet används en variabel och pipelinen för att ta bort ett jobb efter namn.
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
använder parametern Namn för att ange jobbet BatchJob. Jobbobjektet lagras i variabeln $batch
. Objektet i $batch
skickas ned i pipelinen till Remove-Job
.
Ett alternativ är att använda jobbparametern, till exempel .Remove-Job -Job $batch
Exempel 2: Ta bort alla jobb i en session
I det här exemplet tas alla jobb i den aktuella PowerShell-sessionen bort.
Get-job | Remove-Job
Get-Job
hämtar alla jobb i den aktuella PowerShell-sessionen. Jobbobjekten skickas ned i pipelinen till Remove-Job
.
Exempel 3: Ta bort ej påbörjade jobb
Det här exemplet tar bort alla jobb från den aktuella PowerShell-sessionen som inte har startats.
Remove-Job -State NotStarted
Remove-Job
använder parametern State för att ange jobbstatus.
Exempel 4: Ta bort jobb med ett eget namn
Det här exemplet tar bort alla jobb från den aktuella sessionen med egna namn som slutar med batch*, inklusive jobb som körs.
Remove-Job -Name *batch -Force
Remove-Job
använder parametern Namn för att ange ett jobbnamnsmönster. Mönstret innehåller jokertecknet asterisk (*
) för att hitta alla jobbnamn som slutar med batch. Parametern Force tar bort jobb som körs.
Exempel 5: Ta bort ett jobb som har skapats av Invoke-Command
Det här exemplet tar bort ett jobb som startades på en fjärrdator med hjälp av Invoke-Command
parametern AsJob .
Eftersom exemplet använder asjob-parametern skapas jobbobjektet på den lokala datorn. Men jobbet körs på en fjärrdator. Därför använder du lokala kommandon för att hantera jobbet.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
kör ett jobb på Server01-datorn . Parametern AsJob kör ScriptBlock som ett bakgrundsjobb. Jobbobjektet lagras i variabeln $job
. Variabelobjektet $job
skickas ned i pipelinen till Remove-Job
.
Exempel 6: Ta bort ett jobb som har skapats av Invoke-Command och Start-Job
Det här exemplet visar hur du tar bort ett jobb på en fjärrdator som startades med hjälp Invoke-Command
av för att köra Start-Job
. Jobbobjektet skapas på fjärrdatorn och fjärrkommandon används för att hantera jobbet. En beständig anslutning krävs när du kör ett fjärrkommando Start-Job
.
$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
skapar en PSSession, en beständig anslutning, till Server01-datorn . Anslutningen sparas i variabeln $S
.
Invoke-Command
ansluter till sessionen som sparats i $S
. ScriptBlock använder Start-Job
för att starta ett fjärrjobb. Jobbet kör ett Get-Process
kommando och använder parametern Namn för att ange ett eget jobbnamn, MyJob.
Invoke-Command
$S
använder sessionen och kör Remove-Job
. Parametern Namn anger att jobbet med namnet MyJob tas bort.
Exempel 7: Ta bort ett jobb med hjälp av dess InstanceId
Det här exemplet tar bort ett jobb baserat på dess InstanceId.
$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
startar ett bakgrundsjobb och jobbobjektet sparas i variabeln $job
.
Objektet i $job
skickas ned i pipelinen till Format-List
. Parametern Egenskap använder en asterisk (*
) för att ange att alla objektets egenskaper visas i en lista.
Remove-Job
använder parametern InstanceId för att ange det jobb som ska tas bort.
Parametrar
-Command
Tar bort jobb som innehåller de angivna orden i kommandot . Du kan ange en kommaavgränsad matris.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Du uppmanas att bekräfta innan Remove-Job
den körs.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Tar bort jobb som uppfyller alla villkor som anges i den associerade hash-tabellen. Ange en hash-tabell där nycklarna är jobbegenskaper och värdena är jobbegenskapsvärden.
Den här parametern fungerar bara på anpassade jobbtyper, till exempel arbetsflödesjobb och schemalagda jobb. Det fungerar inte med standardbakgrundsjobb, till exempel de som skapas med hjälp Start-Job
av .
Den här parametern introduceras i PowerShell 3.0.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Tar bort ett jobb även om jobbets tillstånd är Körs. Om parametern Force inte har angetts Remove-Job
tas inte jobb som körs bort.
Type: | SwitchParameter |
Aliases: | F |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Tar bort bakgrundsjobb med det angivna ID:t. Du kan ange en kommaavgränsad matris. Jobbets ID är ett unikt heltal som identifierar ett jobb i den aktuella sessionen.
Om du vill hitta ett jobbs ID använder Get-Job
du utan parametrar.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Tar bort jobb med angivet InstanceId. Du kan ange en kommaavgränsad matris. Ett InstanceId är ett unikt GUID som identifierar ett jobb.
Om du vill hitta ett jobbs InstanceId använder du Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Anger vilka jobb som ska tas bort. Ange en variabel som innehåller jobben eller ett kommando som hämtar jobben. Du kan ange en kommaavgränsad matris.
Du kan skicka jobbobjekt i pipelinen till Remove-Job
.
Type: | Job[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Tar bara bort jobb med det angivna egna namnet. Jokertecken tillåts. Du kan ange en kommaavgränsad matris.
Egna namn för jobb är inte garanterade unika, inte ens i en PowerShell-session. Använd parametrarna WhatIf och Confirm när du tar bort filer efter namn.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-State
Tar bara bort jobb med angivet tillstånd. Om du vill ta bort jobb med tillståndet Körs använder du parametern Force .
Godkända värden:
- AtBreakpoint
- Blockerad
- Slutförd
- Frånkopplad
- Misslyckad
- NotStarted
- Körs
- Stoppad
- Stoppas
- Inaktiverad
- Pausar
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
Visar vad som skulle hända om Remove-Job
körs. Cmdleten körs inte.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka ett jobbobjekt nedåt i pipelinen till Remove-Job
.
Utdata
None
Remove-Job
genererar inga utdata.
Kommentarer
Ett PowerShell-jobb skapar en ny process. När jobbet har slutförts avslutas processen. När Remove-Job
körs tas jobbets tillstånd bort.
Om ett jobb stoppas före slutförandet och dess process inte har avslutats avslutas processen med två skäl.