Condividi tramite


Suspend-Job

Arresta temporaneamente i processi del flusso di lavoro.

Sintassi

SessionIdParameterSet (Impostazione predefinita)

Suspend-Job
    [-Id] <Int32[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Suspend-Job
    [-Job] <Job[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Suspend-Job
    [-Name] <String[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Suspend-Job
    [-InstanceId] <Guid[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Suspend-Job
    [-Filter] <Hashtable>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Suspend-Job
    [-State] <JobState>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Descrizione

Il cmdlet Suspend-Job sospende i processi del flusso di lavoro. Suspend indica l'interruzione temporanea o la sospensione di un processo del flusso di lavoro. Questo cmdlet consente agli utenti che eseguono flussi di lavoro di sospendere il flusso di lavoro. 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 nei processi del flusso di lavoro. Non funziona su processi in background standard, ad esempio quelli avviati usando il cmdlet Start-Job.

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

Quando si sospende un processo del flusso di lavoro, il processo del flusso di lavoro viene eseguito al checkpoint successivo, sospende 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 è Suspended.

La sospensione si basa correttamente 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 PSPersist flusso di lavoro. È 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

In questo esempio viene illustrato come sospendere un processo del flusso di lavoro.

Il primo comando crea il flusso di lavoro Get-SystemLog. Il flusso di lavoro usa l'attività CheckPoint-Workflow per definire un checkpoint nel flusso di lavoro.

Il secondo comando usa il parametro AsJob comune a tutti i flussi di lavoro per eseguire il flusso di lavoro Get-SystemLog come processo in background. Il comando usa il parametro comune JobName flusso di lavoro per specificare un nome descrittivo per il processo del flusso di lavoro.

Il terzo comando usa il cmdlet Get-Job per ottenere il processo del flusso di lavoro LogflowJob. L'output mostra che il valore della proprietà PSJobTypeName è PSWorkflowJob.

Il quarto comando usa il cmdlet Suspend-Job per sospendere il processo di LogflowJob. Il processo viene eseguito nel checkpoint e quindi viene sospeso.

#Sample Workflow
workflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    inlinescript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}
Get-SystemLog -AsJob -JobName "LogflowJob"
Get-Job -Name LogflowJob
Id   Name          PSJobTypeName   State       HasMoreData     Location   Command
--   ----          -------------   -----       -----------     --------   -------
4    LogflowJob    PSWorkflowJob   Running     True            localhost   Get-SystemLog
Suspend-Job -Name LogflowJob
Id   Name          PSJobTypeName   State       HasMoreData     Location   Command
--   ----          -------------   -----       -----------     --------   -------
4    LogflowJob    PSWorkflowJob   Suspended   True            localhost   Get-SystemLog

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

In questo esempio viene illustrato come sospendere e riprendere un processo del flusso di lavoro.

Il primo comando sospende il processo LogWorkflowJob. Il comando restituisce immediatamente. L'output mostra che il processo del flusso di lavoro è ancora in esecuzione, anche se viene sospeso.

Il secondo comando usa il cmdlet Get-Job per ottenere il processo LogWorkflowJob. L'output mostra che il processo del flusso di lavoro è stato sospeso correttamente.

Il terzo comando usa il cmdlet Get-Job per ottenere il processo LogWorkflowJob e il cmdlet Resume-Job per riprenderlo. L'output mostra che il processo del flusso di lavoro è stato ripreso correttamente ed è ora in esecuzione.

Suspend-Job -Name LogWorkflowJob
Id   Name          PSJobTypeName      State         HasMoreData     Location      Command
--   ----          -------------      -----         -----------     --------      -------
67   LogflowJob    PSWorkflowJob      Running       True            localhost     LogWorkflow
Get-Job -Name LogWorkflowJob
Id   Name          PSJobTypeName      State         HasMoreData     Location      Command
--   ----          -------------      -----         -----------     --------      -------
67   LogflowJob    PSWorkflowJob      Suspended     True            localhost     LogWorkflow
Get-Job -Name LogWorkflowJob | Resume-Job
Id     Name          PSJobTypeName      State       HasMoreData     Location      Command
--     ----          -------------      -----       -----------     --------      -------
67     LogflowJob    PSWorkflowJob      Running     True            localhost     LogWorkflow

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

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 è metadati del processo (PSPrivateMetadata).

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

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 la sospensione del processo del flusso di lavoro. 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 la sospensione di un processo del flusso di lavoro

Suspend-Job Maintenance -Force

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

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:False
Supporta i caratteri jolly:False
DontShow:False
Alias:cfr

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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 proprietà del processo e i valori sono valori delle proprietà del processo.

Proprietà dei parametri

Tipo:Hashtable
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

FilterParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-Force

Sospende immediatamente il processo del flusso di lavoro. 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. È anche possibile usare questo parametro per sospendere i processi del flusso di lavoro che non dispongono di checkpoint.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:F

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Id

Specifica gli ID dei processi sospesi da questo cmdlet.

L'ID è un numero intero che identifica in modo univoco il lavoro nella sessione corrente. È più facile ricordare e digitare l'ID 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.

Proprietà dei parametri

Tipo:

Int32[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

SessionIdParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-InstanceId

Specifica gli ID istanza dei processi sospesi da questo cmdlet. Il valore predefinito è tutte le attività.

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

Proprietà dei parametri

Tipo:

Guid[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

InstanceIdParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-Job

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

Proprietà dei parametri

Tipo:

Job[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

JobParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-Name

Specifica i nomi descrittivi dei processi sospesi da questo cmdlet. Immettere uno o più nomi di processo del flusso di lavoro. Sono supportati caratteri jolly.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

NameParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-State

Specifica uno stato di lavoro. Questo cmdlet arresta solo i processi nello stato specificato. I valori accettabili per questo parametro sono:

  • Non Avviato
  • Correre
  • Finito
  • Non riuscito
  • Fermato
  • Bloccati
  • Sospeso
  • Disconnesso
  • Sospensione
  • Interruzione

Suspend-Job sospende solo i processi del flusso di lavoro nello stato In esecuzione.

Per altre informazioni sugli stati del processo, vedere 'enumerazione JobState.

Proprietà dei parametri

Tipo:JobState
Valore predefinito:None
Valori accettati:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

StateParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti: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 al piping di un comando Suspend-Job al cmdlet Wait-Job.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:False
Supporta i caratteri jolly:False
DontShow:False
Alias:Wi

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

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 irreversibile.

Output

Job

Questo cmdlet restituisce i processi sospesi.

Note

Windows PowerShell include gli alias seguenti per Suspend-Job:

  • sujb

Il meccanismo e la posizione per il 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 file flat per impostazione predefinita, ma possono anche essere salvati in un database.

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

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

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 Suspended.

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