Stop-Job

Hiermee stopt u een PowerShell-achtergrondtaak.

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

De Stop-Job cmdlet stopt PowerShell-achtergrondtaken die worden uitgevoerd. U kunt deze cmdlet gebruiken om alle taken te stoppen of geselecteerde taken te stoppen op basis van hun naam, id, exemplaar-id of status, of door een taakobject door te geven aan Stop-Job.

U kunt Stop-Job achtergrondtaken stoppen, zoals taken die zijn gestart met behulp van de Start-Job cmdlet of de AsJob-parameter van een cmdlet. Wanneer u een achtergrondtaak stopt, voltooit PowerShell alle taken die in die taakwachtrij in behandeling zijn en beëindigt u de taak. Er worden geen nieuwe taken aan de wachtrij toegevoegd nadat deze opdracht is verzonden.

Met deze cmdlet worden geen achtergrondtaken verwijderd. Gebruik de Remove-Job cmdlet om een taak te verwijderen.

Vanaf Windows PowerShell 3.0 worden Stop-Job ook aangepaste taaktypen gestopt, zoals WorkflowJobs en exemplaren van ScheduledJobs. Als u een taak wilt stoppen Stop-Job met een aangepast taaktype, importeert u de module die het aangepaste taaktype ondersteunt in de sessie voordat u een Stop-Job opdracht uitvoert, hetzij met behulp van de Import-Module cmdlet of door een cmdlet in de module te gebruiken of op te halen. Zie de documentatie van de functie aangepast taaktype voor informatie over een bepaald aangepast taaktype.

Voorbeelden

Voorbeeld 1: Een taak op een externe computer stoppen met 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 }

In dit voorbeeld ziet u hoe u de Stop-Job cmdlet gebruikt om een taak te stoppen die wordt uitgevoerd op een externe computer.

Omdat de taak is gestart met de Invoke-Command cmdlet om een Start-Job opdracht op afstand uit te voeren, wordt het taakobject opgeslagen op de externe computer. U moet een andere Invoke-Command opdracht gebruiken om een Stop-Job opdracht op afstand uit te voeren. Zie about_Remote_Jobs voor meer informatie over externe achtergrondtaken.

Met de eerste opdracht maakt u een PowerShell-sessie (PSSession) op de Server01-computer en slaat u vervolgens het sessieobject op in de $s variabele. De opdracht gebruikt de referenties van een domeinbeheerder.

De tweede opdracht gebruikt de Invoke-Command cmdlet om een Start-Job opdracht uit te voeren in de sessie. Met de opdracht in de taak worden alle gebeurtenissen in het gebeurtenislogboek van het systeem opgeslagen. Het resulterende taakobject wordt opgeslagen in de $j variabele.

De derde opdracht stopt de taak. De cmdlet wordt gebruikt Invoke-Command om een Stop-Job opdracht uit te voeren in de PSSession op Server01. Omdat de taakobjecten worden opgeslagen in $j, wat een variabele is op de lokale computer, gebruikt de opdracht De wijzigingsfunctie bereik gebruiken om te identificeren $j als een lokale variabele. Zie about_Remote_Variables voor meer informatie over het wijzigen van bereik gebruiken.

Wanneer de opdracht is voltooid, wordt de taak gestopt en is de PSSession$s beschikbaar voor gebruik.

Voorbeeld 2: Een achtergrondtaak stoppen

Stop-Job -Name "Job1"

Met deze opdracht wordt de Job1 achtergrondtaak gestopt.

Voorbeeld 3: Verschillende achtergrondtaken stoppen

Stop-Job -Id 1, 3, 4

Met deze opdracht worden drie taken gestopt. Het identificeert ze door hun id's.

Voorbeeld 4: Alle achtergrondtaken stoppen

Get-Job | Stop-Job

Met deze opdracht worden alle achtergrondtaken in de huidige sessie gestopt.

Voorbeeld 5: Alle geblokkeerde achtergrondtaken stoppen

Stop-Job -State Blocked

Met deze opdracht worden alle taken gestopt die worden geblokkeerd.

Voorbeeld 6: Een taak stoppen op exemplaar-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

Deze opdrachten laten zien hoe u een taak stopt op basis van de InstanceID.

De eerste opdracht gebruikt de Get-Job cmdlet om de taken in de huidige sessie op te halen. De opdracht maakt gebruik van een pijplijnoperator (|) om de taken naar een Format-Table opdracht te verzenden, waarin een tabel met de opgegeven eigenschappen van elke taak wordt weergegeven. De tabel bevat de InstanceID van elke taak. Er wordt een berekende eigenschap gebruikt om de taakstatus weer te geven.

De tweede opdracht maakt gebruik van een Stop-Job opdracht met de parameter InstanceID om een geselecteerde taak te stoppen.

Voorbeeld 7: Een taak stoppen op een externe computer

$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

In dit voorbeeld ziet u hoe u de Stop-Job cmdlet gebruikt om een taak te stoppen die wordt uitgevoerd op een externe computer.

Omdat de taak is gestart met de astaakparameter van de Invoke-Command cmdlet, bevindt het taakobject zich op de lokale computer, ook al wordt de taak uitgevoerd op de externe computer. Daarom kunt u een lokale Stop-Job opdracht gebruiken om de taak te stoppen.

De eerste opdracht gebruikt de Invoke-Command cmdlet om een achtergrondtaak te starten op de Server01-computer. De opdracht gebruikt de parameter AsJob om de externe opdracht uit te voeren als achtergrondtaak.

Met deze opdracht wordt een taakobject geretourneerd. Dit is hetzelfde taakobject dat door de Start-Job cmdlet wordt geretourneerd. Met de opdracht wordt het taakobject opgeslagen in de $j variabele.

De tweede opdracht maakt gebruik van een pijplijnoperator om de taak in de $j variabele naar Stop-Job. De opdracht gebruikt de parameter PassThru om rechtstreeks Stop-Job een taakobject te retourneren. De weergave van het taakobject bevestigt dat de status van de taak is gestopt.

Zie about_Remote_Jobs voor meer informatie over externe achtergrondtaken.

Parameters

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

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

-Filter

Hiermee geeft u een hash-tabel met voorwaarden op. Met deze cmdlet worden taken gestopt die voldoen aan elke voorwaarde. Voer een hashtabel in waarin de sleutels taakeigenschappen zijn en de waarden taakeigenschapswaarden zijn.

Deze parameter werkt alleen voor aangepaste taaktypen, zoals WorkflowJobs en ScheduledJobs. Het werkt niet voor standaardachtergrondtaken, zoals taken die zijn gemaakt met behulp van de Start-Job cmdlet. Zie het Help-onderwerp voor het taaktype voor informatie over ondersteuning voor deze parameter.

Deze parameter is geïntroduceerd in Windows PowerShell 3.0.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Id

Hiermee geeft u de id's van taken op die door deze cmdlet worden gestopt. De standaardwaarde is alle taken in de huidige sessie.

De id is een geheel getal dat de taak in de huidige sessie uniek identificeert. Het is gemakkelijker te onthouden en te typen dan de exemplaar-id, maar is alleen uniek in de huidige sessie. U kunt een of meer id's typen, gescheiden door komma's. Als u de id van een taak wilt zoeken, typt u Get-Job.

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

-InstanceId

Hiermee geeft u de exemplaar-id's van taken op die door deze cmdlet worden gestopt. De standaardwaarde is alle taken.

Een exemplaar-id is een GUID waarmee de taak op de computer uniek wordt geïdentificeerd. Als u de exemplaar-id van een taak wilt zoeken, gebruikt u Get-Job.

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

-Job

Hiermee geeft u de taken op die door deze cmdlet worden gestopt. Voer een variabele in die de taken bevat of een opdracht waarmee de taken worden ophaalt. U kunt ook een pijplijnoperator gebruiken om taken naar de Stop-Job cmdlet te verzenden. Verwijdert standaard Stop-Job alle taken die zijn gestart in de huidige sessie.

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

-Name

Hiermee geeft u beschrijvende namen van taken op die door deze cmdlet worden gestopt. Voer de taaknamen in een door komma's gescheiden lijst in of gebruik jokertekens (*) om een taaknaampatroon in te voeren. Stop-Job Standaard worden alle taken gestopt die in de huidige sessie zijn gemaakt.

Omdat de beschrijvende naam niet gegarandeerd uniek is, gebruikt u de parameters WhatIf en Confirm bij het stoppen van taken op naam.

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

-PassThru

Retourneert een object dat het item vertegenwoordigt waarmee u werkt. Deze cmdlet genereert standaard geen uitvoer.

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

-State

Hiermee geeft u een taakstatus op. Met deze cmdlet worden alleen taken met de opgegeven status gestopt. De aanvaardbare waarden voor deze parameter zijn:

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

Zie JobState-opsomming voor meer informatie over taakstatussen.

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

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

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

Invoerwaarden

System.Management.Automation.RemotingJob

U kunt een taakobject doorsluisen naar deze cmdlet.

Uitvoerwaarden

None, System.Management.Automation.PSRemotingJob

Deze cmdlet retourneert een taakobject als u de parameter PassThru opgeeft. Anders genereert deze cmdlet geen uitvoer.