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]
       [-Name] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-InstanceId] <Guid[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Filter] <Hashtable>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-State] <JobState>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Descrizione

Il Suspend-Job cmdlet 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 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 Suspend-Job cmdlet funziona solo nei processi del flusso di lavoro. Non funziona su processi in background standard, ad esempio quelli avviati usando il Start-Job cmdlet .

Per identificare un processo del flusso di lavoro, cercare un valore di PSWorkflowJob nella proprietà PSJobTypeName del processo. Per determinare se un particolare tipo di processo personalizzato supporta il Suspend-Job cmdlet, vedere gli argomenti della Guida per il 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 Wait-Job cmdlet . 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 Import-Module cmdlet 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

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

Il primo comando crea il Get-SystemLog flusso di lavoro. 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 Get-SystemLog flusso di lavoro come processo in background. Il comando usa il parametro comune del flusso di lavoro JobName per specificare un nome descrittivo per il processo del flusso di lavoro.

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

Il quarto comando usa il Suspend-Job cmdlet per sospendere il LogflowJob processo. 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

Questo esempio illustra come sospendere e riavviare 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 Get-Job cmdlet per ottenere il processo LogWorkflowJob. L'output mostra che il processo del flusso di lavoro è stato sospeso correttamente.

Il terzo comando usa il Get-Job cmdlet per ottenere il processo LogWorkflowJob e il Resume-Job cmdlet 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 Invoke-Command cmdlet 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. 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 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 la sospensione di un processo del flusso di lavoro

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 essere ripreso correttamente.

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Tipo:SwitchParameter
Alias:cf
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly: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à.

Tipo:Hashtable
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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.

Tipo:SwitchParameter
Alias:F
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Id

Specifica gli ID dei processi sospesi da questo cmdlet.

L'ID è un numero intero che identifica in modo univoco il processo 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 Get-Job cmdlet .

Tipo:Int32[]
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-InstanceId

Specifica gli ID 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.

Tipo:Guid[]
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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 Suspend-Job cmdlet .

Tipo:Job[]
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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.

Tipo:String[]
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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
  • Bloccati
  • Suspended
  • Disconnesso
  • Suspending
  • Arresto in corso

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

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

Tipo:JobState
Valori accettati:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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 eseguire il piping di un Suspend-Job comando al Wait-Job cmdlet .

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-WhatIf

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

Tipo:SwitchParameter
Alias:wi
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly: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 irreversibile.

Output

Job

Questo cmdlet restituisce i processi sospesi.

Note

Windows PowerShell include gli alias seguenti per Suspend-Job:

  • sujb

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 In esecuzione, Suspend-Job viene visualizzato un messaggio di avviso. Per eliminare l'avviso, usare il parametro comune WarningAction con un 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 Get-Job cmdlet per ottenere i processi del flusso di lavoro nello stato Suspended.

Alcuni tipi di processi 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.