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 Pågående PowerShell-bakgrundsjobb. 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 asjob-parametern för valfri cmdlet. När du stoppar ett bakgrundsjobb slutför PowerShell alla aktiviteter som väntar i jobbkön och avslutar sedan jobbet. Inga nya aktiviteter 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 Stop-Job stoppas även anpassade jobbtyper, till exempel WorkflowJobs och instanser av ScheduledJobs. Om du vill aktivera Stop-Job för att 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 cmdleten Import-Module 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 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 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 Invoke-Command kommando 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 ett Start-Job kommando 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 ett Stop-Job kommando i PSSession på Server01. Eftersom jobbobjekten lagras i $j, vilket är en variabel på den lokala datorn, använder kommandot modifieraren Using scope ( Använda omfång) för att identifiera $j som en lokal variabel. Mer information om att använda omfångsmodifieraren finns i about_Remote_Variables.

När kommandot har slutförts stoppas jobbet och PSSession i $s är tillgängligt för användning.

Exempel 2: Stoppa ett bakgrundsjobb

Stop-Job -Name "Job1"

Det här kommandot stoppar bakgrundsjobbet Job1 .

Exempel 3: Stoppa flera bakgrundsjobb

Stop-Job -Id 1, 3, 4

Det här kommandot stoppar tre jobb. Den identifierar dem med deras ID:t.

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 efter 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 InstanceID.

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 InstanceID 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 asjob-parametern 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 asjob-parametern för att köra fjärrkommandot som ett bakgrundsjobb.

Det här kommandot returnerar ett jobbobjekt som ä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 status är Stoppad.

Mer information om fjärrbakgrundsjobb finns i about_Remote_Jobs.

Parametrar

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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 WorkflowJobs och ScheduledJobs. Det fungerar inte med 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.

Type:Hashtable
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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.

Type:Int32[]
Position:0
Default value:All jobs
Accept pipeline input:True
Accept wildcard characters: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.

Type:Guid[]
Position:0
Default value:All jobs
Accept pipeline input:True
Accept wildcard characters:False

-Job

Anger de jobb som denna cmdlet 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 Stop-Job tar bort alla jobb som startades i den aktuella sessionen.

Type:Job[]
Position:0
Default value:All jobs
Accept pipeline input:True
Accept wildcard characters:False

-Name

Anger egna namn på jobb som denna cmdlet stoppar. Ange jobbnamnen i en kommaavgränsad lista eller använd jokertecken (*) för att ange ett jobbnamnsmönster. Som standard Stop-Job stoppar alla jobb som skapats i den aktuella sessionen.

Eftersom det egna namnet inte garanterat är unikt använder du parametrarna WhatIf och Confirm när du stoppar jobb efter namn.

Type:String[]
Position:0
Default value:All jobs
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

Returnerar ett objekt som representerar det objekt som du arbetar med. Som standard genererar denna cmdlet inga utdata.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-State

Anger ett jobbtillstånd. Den här cmdleten stoppar endast jobb i det angivna tillståndet. De acceptabla värdena för den här parametern är:

  • NotStarted
  • Running
  • Completed
  • Failed
  • Stopped
  • Blocked
  • Suspended
  • Disconnected
  • Suspending
  • Stopping

Mer information om jobbtillstånd finns i JobState-uppräkning.

Type:JobState
Accepted values:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Default value:All jobs
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

System.Management.Automation.RemotingJob

Du kan skicka ett jobbobjekt till den här cmdleten.

Utdata

None

Som standard returnerar denna cmdlet inga utdata.

System.Management.Automation.PSRemotingJob

När du använder parametern PassThru returnerar den här cmdleten ett jobbobjekt.