Stop-Job
Stoppar ett PowerShell-bakgrundsjobb.
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>]
Description
Cmdleten Stop-Job stoppar PowerShell-bakgrundsjobb som pågår. Du kan använda den här cmdleten för att stoppa alla jobb eller stoppa valda jobb baserat på deras namn, ID, instans-ID eller tillstånd, eller genom att skicka ett jobbobjekt till Stop-Job.
Du kan använda Stop-Job för att stoppa bakgrundsjobb, till exempel de som startades med hjälp av cmdleten Start-Job eller parametern AsJob för valfri cmdlet. När du stoppar ett bakgrundsjobb slutför PowerShell alla uppgifter som väntar i jobbkön och avslutar sedan jobbet. Inga nya uppgifter läggs till i kön när det här kommandot har skickats.
Den här cmdleten tar inte bort bakgrundsjobb. Om du vill ta bort ett jobb använder du cmdleten Remove-Job.
Från och med Windows PowerShell 3.0 stoppar även anpassade jobbtyper, till exempel arbetsflödesjobb och instanser av schemalagda jobb. Om du vill aktivera stoppa ett jobb med anpassad jobbtyp importerar du modulen som stöder den anpassade jobbtypen till sessionen innan du kör ett Stop-Job-kommando, antingen med hjälp av Import-Module cmdlet eller genom att använda eller hämta en cmdlet i modulen. Information om en viss typ av anpassat jobb finns i dokumentationen för funktionen för anpassad jobbtyp.
Exempel
Exempel 1: Stoppa ett jobb på en fjärrdator med hjälp av 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 }
Det här exemplet visar hur du använder cmdleten Stop-Job för att stoppa ett jobb som körs på en fjärrdator.
Eftersom jobbet startades med hjälp av cmdleten Invoke-Command för att köra ett Start-Job--kommando via fjärranslutning lagras jobbobjektet på fjärrdatorn. Du måste använda ett annat kommandot Invoke-Command för att fjärrköra ett Stop-Job-kommando. Mer information om fjärrbakgrundsjobb finns i about_Remote_Jobs.
Det första kommandot skapar en PowerShell-session (PSSession) på Server01-datorn och lagrar sedan sessionsobjektet i variabeln $s. Kommandot använder autentiseringsuppgifterna för en domänadministratör.
Det andra kommandot använder cmdleten Invoke-Command för att köra kommandot Start-Job i sessionen. Kommandot i jobbet hämtar alla händelser i systemhändelseloggen. Det resulterande jobbobjektet lagras i variabeln $j.
Det tredje kommandot stoppar jobbet. Den använder cmdleten Invoke-Command för att köra kommandot Stop-Job i PSSession på Server01. Eftersom jobbobjekten lagras i $j, som är en variabel på den lokala datorn, använder kommandot modifieraren Använda omfång för att identifiera $j som en lokal variabel. Mer information om modifieraren Using scope (Använda omfång) finns i about_Remote_Variables.
När kommandot har slutförts stoppas jobbet och PSSession- i $s är tillgänglig för användning.
Exempel 2: Stoppa ett bakgrundsjobb
Stop-Job -Name "Job1"
Det här kommandot stoppar jobb1-bakgrundsjobbet.
Exempel 3: Stoppa flera bakgrundsjobb
Stop-Job -Id 1, 3, 4
Det här kommandot stoppar tre jobb. Den identifierar dem med sina ID:n.
Exempel 4: Stoppa alla bakgrundsjobb
Get-Job | Stop-Job
Det här kommandot stoppar alla bakgrundsjobb i den aktuella sessionen.
Exempel 5: Stoppa alla blockerade bakgrundsjobb
Stop-Job -State Blocked
Det här kommandot stoppar alla jobb som blockeras.
Exempel 6: Stoppa ett jobb med hjälp av ett instans-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
Dessa kommandon visar hur du stoppar ett jobb baserat på dess instans-ID.
Det första kommandot använder cmdleten Get-Job för att hämta jobben i den aktuella sessionen. Kommandot använder en pipelineoperator (|) för att skicka jobben till ett Format-Table kommando, som visar en tabell med de angivna egenskaperna för varje jobb. Tabellen innehåller instans-ID för varje jobb. Den använder en beräknad egenskap för att visa jobbtillståndet.
Det andra kommandot använder ett Stop-Job-kommando som har parametern InstanceID för att stoppa ett valt jobb.
Exempel 7: Stoppa ett jobb på en fjärrdator
$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
Det här exemplet visar hur du använder cmdleten Stop-Job för att stoppa ett jobb som körs på en fjärrdator.
Eftersom jobbet startades med hjälp av parametern AsJob för cmdleten Invoke-Command finns jobbobjektet på den lokala datorn, även om jobbet körs på fjärrdatorn. Därför kan du använda ett lokalt stop-job--kommando för att stoppa jobbet.
Det första kommandot använder cmdleten Invoke-Command för att starta ett bakgrundsjobb på Server01-datorn. Kommandot använder parametern AsJob för att köra fjärrkommandot som ett bakgrundsjobb.
Det här kommandot returnerar ett jobbobjekt, vilket är samma jobbobjekt som cmdleten Start-Job returnerar. Kommandot sparar jobbobjektet i variabeln $j.
Det andra kommandot använder en pipelineoperator för att skicka jobbet i variabeln $j till Stop-Job. Kommandot använder parametern PassThru för att dirigera Stop-Job- för att returnera ett jobbobjekt. Jobbobjektets visning bekräftar att jobbets tillstånd har stoppats.
Mer information om fjärrbakgrundsjobb finns i about_Remote_Jobs.
Parametrar
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Filter
Anger en hash-tabell med villkor. Den här cmdleten stoppar jobb som uppfyller alla villkor. 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 på standardbakgrundsjobb, till exempel de som skapas med hjälp av cmdleten Start-Job. Information om stöd för den här parametern finns i hjälpavsnittet för jobbtypen.
Den här parametern introducerades i Windows PowerShell 3.0.
Typ: | Hashtable |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Id
Anger ID:n för jobb som den här cmdleten stoppar. Standardvärdet är alla jobb i den aktuella sessionen.
ID:t är ett heltal som unikt identifierar jobbet i den aktuella sessionen.
Det är lättare att komma ihåg och skriva än instans-ID, men det är bara unikt i den aktuella sessionen.
Du kan skriva ett eller flera ID:er, avgränsade med kommatecken.
Om du vill hitta ID:t för ett jobb skriver du Get-Job
.
Typ: | Int32[] |
Position: | 0 |
Standardvärde: | All jobs |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-InstanceId
Anger instans-ID:n för jobb som den här cmdleten stoppar. Standardvärdet är alla jobb.
Ett instans-ID är ett GUID som unikt identifierar jobbet på datorn. Om du vill hitta instans-ID:t för ett jobb använder du Get-Job.
Typ: | Guid[] |
Position: | 0 |
Standardvärde: | All jobs |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Job
Anger de jobb som den här cmdleten stoppar. Ange en variabel som innehåller jobben eller ett kommando som hämtar jobben. Du kan också använda en pipelineoperator för att skicka jobb till cmdleten Stop-Job. Som standard tar Stop-Job bort alla jobb som startades i den aktuella sessionen.
Typ: | Job[] |
Position: | 0 |
Standardvärde: | All jobs |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Name
Anger egna namn på jobb som den här cmdleten stoppar. Ange jobbnamnen i en kommaavgränsad lista eller använd jokertecken (*) för att ange ett jobbnamnsmönster. Som standard stoppar Stop-Job alla jobb som skapats i den aktuella sessionen.
Eftersom det egna namnet inte garanterat är unikt använder du parametrarna
Typ: | String[] |
Position: | 0 |
Standardvärde: | All jobs |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | True |
-PassThru
Returnerar ett objekt som representerar det objekt som du arbetar med. Som standard genererar den här cmdleten inga utdata.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-State
Anger ett jobbtillstånd. Den här cmdleten stoppar endast jobb i det angivna tillståndet. De godtagbara värdena för den här parametern är:
- NotStarted
- Löpning
- Fullbordad
- Misslyckades
- Stoppat
- Blockerad
- Upphängd
- Bortkopplad
- Avbryta
- Stoppa
Mer information om jobbtillstånd finns i JobState Enumeration i MSDN-biblioteket.
Typ: | JobState |
Godkända värden: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Standardvärde: | All jobs |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-WhatIf
Visar vad som skulle hända om cmdleten körs. Cmdleten körs inte.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
System.Management.Automation.RemotingJob
Du kan skicka ett jobbobjekt till den här cmdleten.
Utdata
None, System.Management.Automation.PSRemotingJob
Den här cmdleten returnerar ett jobbobjekt om du anger parametern PassThru. Annars genererar den här cmdleten inga utdata.