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