Condividi tramite


Resume-Job

Riavvia un processo sospeso.

Sintassi

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

Descrizione

Il cmdlet Resume-Job riprende un processo del flusso di lavoro sospeso, ad esempio usando il cmdlet Suspend-Job o l'attività about_Suspend-Workflow. Quando un processo del flusso di lavoro riprende, il motore di processo ricostruisce lo stato, i metadati e l'output dalle risorse salvate, ad esempio i checkpoint. Il processo viene riavviato senza alcuna perdita di stato o dati. Lo stato del processo cambia da Suspended a Running.

Usare i parametri di Resume-Job per selezionare i processi in base al nome, all'ID dell'istanza o alla pipe di un oggetto processo, ad esempio uno restituito dal cmdlet Get-Job, per riprendere il processo. È anche possibile usare un filtro di proprietà per selezionare un processo da riavviare.

Per impostazione predefinita, Resume-Job viene restituito immediatamente, anche se non sono ancora stati riavviati tutti i processi. Per eliminare il prompt dei comandi finché non vengono riavviati tutti i processi specificati, usare il parametro Wait.

Il cmdlet Resume-Job funziona solo su tipi di processo personalizzati, ad esempio i processi del flusso di lavoro. Non funziona sui processi in background standard, ad esempio quelli avviati usando il cmdlet Start-Job. Se si invia un processo di un tipo non supportato, Resume-Job genera un errore irreversibile e arresta l'esecuzione.

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 Resume-Job , vedere gli argomenti della Guida per il tipo di processo personalizzato.

Prima di usare un cmdlet Job in un tipo di processo personalizzato, importare il modulo che supporta il tipo di processo personalizzato, usando il cmdlet Import-Module o recuperando o usando un cmdlet nel modulo.

Questo cmdlet è stato introdotto in Windows PowerShell 3.0.

Esempio

Esempio 1: Riprendere un processo in base all'ID

The first command uses the **Get-Job** cmdlet to get the job. The output shows that the job is a suspended workflow job.
PS C:\> Get-Job EventJob
Id     Name            PSJobTypeName   State         HasMoreData     Location   Command
--     ----            -------------   -----         -----------     --------   -------
4      EventJob        PSWorkflowJob   Suspended     True            Server01   \\Script\Share\Event.ps1

The second command uses the *Id* parameter of the **Resume-Job** cmdlet to resume the job with an *Id* value of 4.
PS C:\> Resume-Job -Id 4

I comandi in questo esempio verificano che il processo sia un processo del flusso di lavoro sospeso e quindi lo riavviano.

Esempio 2: Riprendere un processo in base al nome

PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest*

Questo comando usa il parametro Name per riavviare diversi processi del flusso di lavoro nel computer locale.

Esempio 3: Usare valori di proprietà personalizzati

PS C:\> Resume-Job -Filter @{CustomID="T091291"} -State Suspended

Questo comando usa il valore di una proprietà personalizzata per identificare il processo del flusso di lavoro da riavviare. Usa il parametro Filter per identificare il processo del flusso di lavoro in base alla relativa proprietà CustomID. Usa inoltre il parametro State per verificare che il processo del flusso di lavoro sia sospeso, prima di tentare di riavviarlo.

Esempio 4: Riprendere tutti i processi sospesi in un computer remoto

PS C:\> Invoke-Command -ComputerName Srv01 -ScriptBlock {Get-Job -State Suspended | Resume-Job}

Questo comando riavvia tutti i processi sospesi nel computer remoto Srv01.

Il comando usa il cmdlet Invoke-Command per eseguire un comando nel computer Srv01. Il comando remoto usa il parametro State del cmdlet Get-Job per ottenere tutti i processi sospesi nel computer. Un operatore pipeline (|) invia i processi sospesi al cmdlet Resume-Job, che li riavvia.

Esempio 5: Attendere la ripresa dei processi

PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest* -Wait

Questo comando usa il parametro Wait per indirizzare Resume-Job per restituire solo dopo la ripresa di tutti i processi specificati. Il parametro Wait risulta particolarmente utile negli script che presuppongono che i processi vengano riavviati prima che lo script continui.

Esempio 6: Riprendere un flusso di lavoro che si sospende

This code sample shows the **Suspend-Workflow** activity in a workflow.
#SampleWorkflow
Workflow Test-Suspend
{
    $a = Get-Date
    Suspend-Workflow
    (Get-Date)- $a
}

The following command runs the Test-Suspend workflow on the Server01 computer.When you run the workflow, the workflow runs the Get-Date activity and stores the result in the $a variable. Then it runs the Suspend-Workflow activity. In response, it takes a checkpoint, suspends the workflow, and returns a workflow job object.  Suspend-Workflow returns a workflow job object even if the workflow is not explicitly run as a job.
PS C:\> Test-Suspend -PSComputerName Server01
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Job8            PSWorkflowJob   Suspended     True            Server01             Test-Suspend

The following command resumes the Test-Suspend workflow in Job8. It uses the *Wait* parameter to hold the command prompt until the job is resumed.
PS C:\> Resume-Job -Name "Job8" -Wait
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command

--     ----            -------------   -----         -----------     --------             -------

8      Job8            PSWorkflowJob   Running       True            Server01             Test-Suspend

This command uses the **Receive-Job** cmdlet to get the results of the Test-Suspend workflow. The final command in the workflow returns a **TimeSpan** object that represents the elapsed time between the current date and time and the date and time that was saved in the $a variable before the workflow was suspended.
PS C:\> Receive-Job -Name Job8
        Days              : 0
        Hours             : 0
        Minutes           : 0
        Seconds           : 19
        Milliseconds      : 823
        Ticks             : 198230041
        TotalDays         : 0.000229432917824074
        TotalHours        : 0.00550639002777778
        TotalMinutes      : 0.330383401666667
        TotalSeconds      : 19.8230041
        TotalMilliseconds : 19823.0041
        PSComputerName    : Server01

Il cmdlet Resume-Job consente di riprendere un processo del flusso di lavoro sospeso usando l'attività Suspend-Workflow . Questa attività sospende un flusso di lavoro all'interno di un flusso di lavoro. È valida solo nei flussi di lavoro.

Per informazioni su Suspend-Workflow, vedere about_Suspend-Workflow.

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 riprende i processi che soddisfano tutte le condizioni della tabella hash. 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

-Id

Specifica una matrice di ID per i processi ripresi 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, eseguire Get-Job.

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

-InstanceId

Specifica una matrice di ID istanza di processi ripresi 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, eseguire Get-Job.

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

-Job

Specifica i processi da riavviare. Immettere una variabile che contiene i processi o un comando che li ottiene. È anche possibile inviare i processi tramite pipe al cmdlet Resume-Job.

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

-Name

Specifica una matrice di nomi descrittivi dei processi ripresi da questo cmdlet. Immettere uno o più nomi di processo. I caratteri jolly sono consentiti.

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

-State

Specifica lo stato dei processi da riprendere. I valori validi per questo parametro sono:

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

Questo cmdlet riprende solo i processi nello stato Sospeso .

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 al riavvio di tutti i risultati del processo. Per impostazione predefinita, questo cmdlet restituisce immediatamente i risultati disponibili.

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. Se Resume-Job ottiene un processo di un tipo non supportato, restituisce un errore di terminazione.

Output

None, System.Management.Automation.Job

Questo cmdlet restituisce i processi che tenta di riprendere, se si usa il parametro PassThru . In caso contrario, il cmdlet non genera alcun output.

Note

  • Il processo di ripresa può riprendere solo i processi sospesi. Se si invia un processo in uno stato diverso, Resume-Job esegue l'operazione di riavvio del processo, ma genera un avviso per informare l'utente che non è stato possibile riavviare il processo. Per eliminare l'avviso, usare il parametro comune WarningAction con un valore di SilentlyContinue.
  • Se un processo non è di un tipo che supporta la ripresa, ad esempio un processo del flusso di lavoro (PSWorkflowJob), Resume-Job restituisce un errore di terminazione.
  • 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 SQL.
  • Quando si riavvia un processo, il suo stato cambia da Suspended a Running. Per trovare i processi in esecuzione, inclusi quelli ripresi da questo cmdlet, usare il parametro State del cmdlet Get-Job per ottenere processi nello stato In esecuzione .
  • 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.