Dela via


Suspend-Job

Stoppar tillfälligt arbetsflödesjobb.

Syntax

Suspend-Job
       [-Force]
       [-Wait]
       [-Id] <Int32[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Job] <Job[]>
       [-Force]
       [-Wait]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Filter] <Hashtable>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-State] <JobState>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-InstanceId] <Guid[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Name] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Cmdleten Suspend-Job pausar arbetsflödesjobb. Pausa innebär att tillfälligt avbryta eller pausa ett arbetsflödesjobb. Med den här cmdleten kan användare som kör arbetsflöden pausa arbetsflödet. Den kompletterar aktiviteten Suspend-Workflowhttps://go.microsoft.com/fwlink/?LinkId=267141, som är ett kommando i arbetsflödet som pausar arbetsflödet.

Cmdleten Suspend-Job fungerar bara på arbetsflödesjobb. Det fungerar inte på standardbakgrundsjobb, till exempel de som startas med hjälp av cmdleten Start-Job.

Om du vill identifiera ett arbetsflödesjobb letar du efter värdet PSWorkflowJob i PSJobTypeName-egenskapen för jobbet. Information om huruvida en viss anpassad jobbtyp stöder cmdleten Suspend-Job finns i hjälpavsnitten för den anpassade jobbtypen.

När du inaktiverar ett arbetsflödesjobb körs arbetsflödesjobbet till nästa kontrollpunkt, pausar och returnerar omedelbart ett arbetsflödesjobbobjekt. Om du vill vänta tills avstängningen har slutförts innan jobbet hämtas använder du parametern Wait för Suspend-Job eller cmdleten Wait-Job. När arbetsflödesjobbet pausas inaktiveras värdet för State-egenskapen för jobbet.

Att pausa korrekt förlitar sig på kontrollpunkter. Det aktuella jobbtillståndet, metadata och utdata sparas i kontrollpunkten så att arbetsflödesjobbet kan återupptas utan förlust av tillstånd eller data. Om arbetsflödesjobbet inte har kontrollpunkter kan det inte pausas korrekt. Om du vill lägga till kontrollpunkter i ett arbetsflöde som du kör använder du den vanliga parametern PSPersist arbetsflöde. Du kan använda parametern Force för att stänga av alla arbetsflödesjobb omedelbart och inaktivera ett arbetsflödesjobb som inte har kontrollpunkter, men åtgärden kan orsaka förlust av tillstånd och data.

Innan du använder en jobb-cmdlet på en anpassad jobbtyp, till exempel ett arbetsflödesjobb (PSWorkflowJob) importerar du modulen som stöder den anpassade jobbtypen, antingen med hjälp av cmdleten Import-Module eller med hjälp av eller med en cmdlet i modulen.

Den här cmdleten introducerades i Windows PowerShell 3.0.

Exempel

Exempel 1: Inaktivera ett arbetsflödesjobb efter namn

The first command creates the Get-SystemLog workflow. The workflow uses the CheckPoint-Workflow activity to define a checkpoint in the workflow.
#Sample WorkflowWorkflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}

The second command uses the *AsJob* parameter that is common to all workflows to run the Get-SystemLog workflow as a background job. The command uses the *JobName* workflow common parameter to specify a friendly name for the workflow job.
PS C:\> Get-SystemLog -AsJob -JobName "Get-SystemLogJob"

The third command uses the **Get-Job** cmdlet to get the Get-SystemLogJob workflow job. The output shows that the value of the **PSJobTypeName** property is PSWorkflowJob.
PS C:\> Get-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Running     True            localhost   Get-SystemLog

The fourth command uses the **Suspend-Job** cmdlet to suspend the Get-SystemLogJob job. The job runs to the checkpoint and then suspends.
PS C:\> Suspend-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Suspended   True            localhost   Get-SystemLog

Det här exemplet visar hur du pausar ett arbetsflödesjobb.

Exempel 2: Pausa och återuppta ett arbetsflödesjobb

The first command suspends the LogWorkflowJob job.The command returns immediately. The output shows that the workflow job is still running, even though it is being suspended.
PS C:\> Suspend-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

The second command uses the **Get-Job** cmdlet to get the LogWorkflowJob job. The output shows that the workflow job suspended successfully.
PS C:\> Get-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Suspended     True            localhost            LogWorkflow

The third command uses the **Get-Job** cmdlet to get the LogWorkflowJob job and the Resume-Job cmdlet to resume it. The output shows that the workflow job resumed successfully and is now running.
PS C:\> Get-Job -Name LogWorkflowJob | Resume-Job
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

Det här exemplet visar hur du pausar och återupptar ett arbetsflödesjobb.

Exempel 3: Pausa ett arbetsflödesjobb på en fjärrdator

PS C:\> Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}

Det här kommandot använder cmdleten Invoke-Command för att pausa ett arbetsflödesjobb på fjärrdatorn Srv01. Värdet för parametern Filter är en hash-tabell som anger ett CustomID-värde. Den här CustomID- är jobbmetadata (PSPrivateMetadata).

Exempel 4: Vänta tills arbetsflödesjobbet pausas

PS C:\> Suspend-Job VersionCheck -Wait
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
 5     VersionCheck  PSWorkflowJob      Suspended     True            localhost            LogWorkflow

Det här kommandot inaktiverar arbetsflödesjobbet VersionCheck. Kommandot använder parametern Wait för att vänta tills arbetsflödesjobbet har pausats. När arbetsflödesjobbet körs till nästa kontrollpunkt och pausas slutförs kommandot och returnerar jobbobjektet.

Exempel 5: Tvinga ett arbetsflödesjobb att pausa

PS C:\> Suspend-Job Maintenance -Force

Det här kommandot inaktiverar arbetsflödesjobbet underhåll med två två skäl. Underhållsjobbet har inga kontrollpunkter. Den kan inte pausas korrekt och kan inte återupptas korrekt.

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 pausar jobb som uppfyller alla villkor. Ange en hash-tabell där nycklarna är jobbegenskaper och värdena är jobbegenskapsvärden.

Typ:Hashtable
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Force

Inaktiverar arbetsflödesjobbet omedelbart. Den här åtgärden kan orsaka förlust av tillstånd och data.

Som standard låter Suspend-Job arbetsflödesjobbet köras till nästa kontrollpunkt och sedan pausa det. Du kan också använda den här parametern för att pausa arbetsflödesjobb som inte har kontrollpunkter.

Typ:SwitchParameter
Alias:F
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Id

Anger ID:t för jobb som den här cmdleten pausar.

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 använder du cmdleten Get-Job.

Typ:Int32[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-InstanceId

Anger instans-ID:t för jobb som den här cmdleten pausar. 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:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Job

Anger de arbetsflödesjobb som den här cmdleten stoppar. Ange en variabel som innehåller arbetsflödesjobben eller ett kommando som hämtar arbetsflödesjobben. Du kan också skicka arbetsflödesjobb till cmdleten Suspend-Job.

Typ:Job[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Name

Anger egna namn på jobb som den här cmdleten pausar. Ange ett eller flera arbetsflödesjobbnamn. Jokertecken stöds.

Typ:String[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
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

Pausa jobb inaktiverar endast arbetsflödesjobb i tillståndet Körs.

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:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Wait

Anger att den här cmdleten undertrycker kommandotolken tills arbetsflödesjobbet är i pausat tillstånd. Som standard returnerar Suspend-Job omedelbart, även om arbetsflödesjobbet ännu inte är i inaktiverat tillstånd.

Parametern Wait motsvarar att skicka ett kommando till cmdleten Wait-Job.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
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

Job

Du kan skicka alla typer av jobb till den här cmdleten. Men om Suspend-Job får ett jobb av en typ som inte stöds returneras ett avslutande fel.

Utdata

Job

Den här cmdleten returnerar jobben som den pausade.

Kommentarer

  • Mekanismen och platsen för att spara ett pausat jobb kan variera beroende på jobbtyp. Till exempel sparas pausade arbetsflödesjobb i ett platt filarkiv som standard, men kan också sparas i en databas.

  • Om du skickar ett arbetsflödesjobb som inte är i tillståndet Körs visas ett varningsmeddelande Pausa jobb. Om du vill ignorera varningen använder du WarningAction gemensam parameter med värdet SilentlyContinue.

    Om ett jobb inte är av en typ som stöder pausning returnerar Suspend-Job ett avslutande fel.

  • Om du vill hitta de arbetsflödesjobb som är inaktiverade, inklusive de som har pausats av den här cmdleten, använder du parametern State för cmdleten Get-Job för att hämta arbetsflödesjobb i tillståndet Pausat.

  • Vissa jobbtyper har alternativ eller egenskaper som hindrar Windows PowerShell från att pausa jobbet. Om det inte går att pausa jobbet kontrollerar du att jobbalternativen och egenskaperna tillåter pausning.