Condividi tramite


Suspend-Job

Arresta temporaneamente i processi del flusso di lavoro.

Sintassi

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>]

Descrizione

Il cmdlet Suspend-Job sospende i processi del flusso di lavoro. Sospendere significa interrompere temporaneamente o sospendere un processo del flusso di lavoro. Questo cmdlet consente agli utenti che stanno eseguendo un flusso di lavoro di sospenderlo. Completa l'attività Suspend-Workflowhttps://go.microsoft.com/fwlink/?LinkId=267141 , ovvero un comando nel flusso di lavoro che sospende il flusso di lavoro.

Il cmdlet Suspend-Job funziona solo sui processi dei flussi di lavoro. Non funziona sui processi in background standard, ad esempio quelli avviati usando il cmdlet Start-Job.

Per identificare un processo del flusso di lavoro, cercare il valore PSWorkflowJob nella proprietà PSJobTypeName del processo. Per determinare se un determinato tipo di processo personalizzato supporta il cmdlet Suspend-Job, vedere gli argomenti della Guida relativi al tipo di processo personalizzato.

Quando si sospende un processo del flusso di lavoro, questo viene eseguito fino al checkpoint successivo e quindi sospeso e restituisce immediatamente un oggetto processo del flusso di lavoro. Per attendere il completamento della sospensione prima di ottenere il processo, usare il parametro Wait di Suspend-Job o il cmdlet Wait-Job. Quando il processo del flusso di lavoro viene sospeso, il valore della proprietà State del processo viene Sospeso.

La corretta sospensione si basa sui checkpoint. Lo stato del processo corrente, i metadati e l'output vengono salvati nel checkpoint in modo che il processo del flusso di lavoro possa essere ripreso senza perdita di stato o dati. Se il processo del flusso di lavoro non dispone di checkpoint, non può essere sospeso correttamente. Per aggiungere checkpoint a un flusso di lavoro in esecuzione, usare il parametro comune del flusso di lavoro PSPersist. È possibile usare il parametro Force per sospendere immediatamente qualsiasi processo del flusso di lavoro e sospendere un processo del flusso di lavoro che non dispone di checkpoint, ma l'azione potrebbe causare la perdita di stato e dati.

Prima di usare un cmdlet Job in un tipo di processo personalizzato, ad esempio un processo del flusso di lavoro (PSWorkflowJob) importare il modulo che supporta il tipo di processo personalizzato, usando il cmdlet Import-Module o usando o usando un cmdlet nel modulo.

Questo cmdlet è stato introdotto in Windows PowerShell 3.0.

Esempio

Esempio 1: Sospendere un processo del flusso di lavoro in base al nome

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

Questo esempio illustra come sospendere un processo del flusso di lavoro.

Esempio 2: Sospendere e riprendere un processo del flusso di lavoro

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

Questo esempio illustra come sospendere e riavviare un processo del flusso di lavoro.

Esempio 3: Sospendere un processo del flusso di lavoro in un computer remoto

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

Questo comando usa il cmdlet Invoke-Command per sospendere un processo del flusso di lavoro nel computer remoto Srv01. Il valore del parametro Filter è una tabella hash che specifica un valore CustomID. Questo CustomID rappresenta metadati del processo (PSPrivateMetadata).

Esempio 4: Attendere che il processo del flusso di lavoro venga sospeso

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

Questo comando sospende il processo del flusso di lavoro VersionCheck. Il comando usa il parametro Wait per attendere che il processo del flusso di lavoro venga sospeso. Quando il processo del flusso di lavoro viene eseguito al checkpoint successivo e viene sospeso, il comando termina e restituisce l'oggetto processo.

Esempio 5: Forzare una sospensione di un processo del flusso di lavoro

PS C:\> Suspend-Job Maintenance -Force

Questo comando sospende forzatamente il processo del flusso di lavoro Maintenance. Il processo di manutenzione non dispone di checkpoint. Non può essere sospeso correttamente e potrebbe non riprendere correttamente.

Parametri

-Confirm

Richiede la conferma dell'utente prima di eseguire il cmdlet.

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

-Filter

Specifica una tabella hash di condizioni. Questo cmdlet sospende i processi che soddisfano tutte le condizioni. Immettere una tabella hash in cui le chiavi sono le proprietà del processo e i valori sono i valori di queste proprietà.

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

-Force

Sospende il processo del flusso di lavoro immediatamente. Questa azione potrebbe causare una perdita di stato e dati.

Per impostazione predefinita, Suspend-Job consente l'esecuzione del processo del flusso di lavoro fino al checkpoint successivo e quindi lo sospende. È possibile usare questo parametro anche per sospendere processi del flusso di lavoro che non contengono checkpoint.

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

-Id

Specifica gli ID dei processi sospesi da questo cmdlet.

L'ID è un intero che identifica in modo univoco il processo nella sessione corrente. È più semplice ricordare e digitare l'ID dell'istanza, ma è univoco solo nella sessione corrente. È possibile digitare uno o più ID, separati da virgole. Per trovare l'ID di un processo, usare il cmdlet Get-Job.

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

-InstanceId

Specifica gli ID dell'istanza dei processi sospesi da questo cmdlet. Il valore predefinito corrisponde a tutti i processi.

Un ID istanza è un GUID che identifica in modo univoco il processo nel computer. Per trovare l'ID istanza di un processo, usare Get-Job.

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

-Job

Specifica i processi del flusso di lavoro arrestati da questo cmdlet. Immettere una variabile che contiene i processi del flusso di lavoro o un comando che li ottiene. È anche possibile inviare tramite pipe i processi del flusso di lavoro al cmdlet Suspend-Job.

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

-Name

Specifica i nomi descrittivi dei processi sospesi da questo cmdlet. Immettere uno o più nomi di processi del flusso di lavoro. I carattere jolly sono supportati.

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

-State

Specifica uno stato del processo. Questo cmdlet arresta solo i processi nello stato specificato. I valori validi per questo parametro sono:

  • NotStarted
  • In esecuzione
  • Completato
  • Non riuscito
  • Arrestato
  • Bloccato
  • Suspended
  • Disconnesso
  • Suspending
  • Stopping

Il processo di sospensione sospende solo i processi del flusso di lavoro nello stato In esecuzione .

Per altre informazioni sugli stati dei processi, vedere Enumerazione JobState nella libreria MSDN.

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

-Wait

Indica che questo cmdlet elimina il prompt dei comandi fino a quando il processo del flusso di lavoro non si trova nello stato sospeso. Per impostazione predefinita, Suspend-Job restituisce immediatamente, anche se il processo del flusso di lavoro non è ancora nello stato sospeso.

Il parametro Wait equivale a piping di un comando Suspend-Job al cmdlet Wait-Job.

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

-WhatIf

Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

Job

È possibile inviare tramite pipe tutti i tipi di processi a questo cmdlet. Tuttavia, se Suspend-Job ottiene un processo di un tipo non supportato, restituisce un errore di terminazione.

Output

Job

Questo cmdlet restituisce i processi sospesi.

Note

  • Il meccanismo e il percorso di salvataggio di un processo sospeso possono variare a seconda del tipo di processo. Ad esempio, i processi del flusso di lavoro sospesi vengono salvati in un archivio di file flat per impostazione predefinita, ma possono essere salvati anche in un database.

  • Se si invia un processo del flusso di lavoro che non è nello stato Running, Suspend-Job visualizza un messaggio di avviso. Per eliminare l'avviso, usare il parametro comune WarningAction con un valore di SilentlyContinue.

    Se un processo non è di un tipo che supporta la sospensione, Suspend-Job restituisce un errore di terminazione.

  • Per trovare i processi del flusso di lavoro sospesi, inclusi quelli sospesi da questo cmdlet, usare il parametro State del cmdlet Get-Job per ottenere i processi del flusso di lavoro nello stato Sospeso.

  • Alcuni tipi di processi hanno opzioni o proprietà che impediscono a Windows PowerShell di sospendere il processo. Se tenta di sospendere il processo non riesce, verificare che le opzioni e le proprietà del processo consentano la sospensione.