Dela via


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 WhatIf och Confirm when stop jobs by name (Bekräfta när jobb stoppas med namn).

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.