Compartir a través de


Suspend-Job

Detiene temporalmente las tareas del flujo de trabajo.

Syntax

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

Description

El cmdlet Suspend-Job suspende los trabajos de flujo de trabajo. Suspender significa interrumpir o pausar temporalmente un trabajo de flujo de trabajo. Este cmdlet permite a los usuarios que están ejecutando los flujos de trabajo suspender el flujo de trabajo. Complementa la actividad Suspend-Workflowhttps://go.microsoft.com/fwlink/?LinkId=267141 , que es un comando del flujo de trabajo que suspende el flujo de trabajo.

El cmdlet Suspend-Job funciona únicamente en tareas del flujo de trabajo. No funciona en trabajos en segundo plano estándar, como los que se inician mediante el cmdlet Start-Job.

Para identificar una tarea del flujo de trabajo, busque un valor de PSWorkflowJob en la propiedad PSJobTypeName de la tarea. Para determinar si un tipo de tarea personalizada determinada admite el cmdlet Suspend-Job, vea los temas de ayuda para el tipo de tarea personalizada.

Al suspender una tarea del flujo de trabajo, la tarea del flujo de trabajo se ejecuta hasta el siguiente punto de control, se suspende y devuelve inmediatamente un objeto de tarea del flujo de trabajo. Para esperar a que se complete la suspensión antes de obtener el trabajo, use el parámetro Wait de Suspend-Job o el cmdlet Wait-Job. Cuando se suspende el trabajo de flujo de trabajo, el valor de la propiedad State del trabajo es Suspendido.

La suspensión correcta se basa en los puntos de control. El estado actual del trabajo, los metadatos y la salida se guardan en el punto de control para que el trabajo de flujo de trabajo se pueda reanudar sin pérdida de estado o datos. Si el trabajo de flujo de trabajo no tiene puntos de control, no se puede suspender correctamente. Para agregar puntos de control a un flujo de trabajo que esté ejecutando, use el parámetro común del flujo de trabajo PSPersist. Puede usar el parámetro Force para suspender cualquier trabajo de flujo de trabajo inmediatamente y suspender un trabajo de flujo de trabajo que no tenga puntos de control, pero la acción podría provocar la pérdida de estado y datos.

Antes de usar un cmdlet Job en un tipo de trabajo personalizado, como un trabajo de flujo de trabajo (PSWorkflowJob) importe el módulo que admite el tipo de trabajo personalizado, ya sea mediante el cmdlet Import-Module o mediante o mediante un cmdlet en el módulo.

Este cmdlet se introdujo en Windows PowerShell 3.0.

Ejemplos

Ejemplo 1: Suspender un trabajo de flujo de trabajo por nombre

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

Este ejemplo muestra cómo suspender una tarea del flujo de trabajo.

Ejemplo 2: Suspender y reanudar un trabajo de flujo de trabajo

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

Este ejemplo muestra cómo suspender y reanudar una tarea del flujo de trabajo.

Ejemplo 3: Suspender un trabajo de flujo de trabajo en un equipo remoto

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

Este comando usa el cmdlet Invoke-Command para suspender un trabajo de flujo de trabajo en el equipo remoto Srv01. El valor del parámetro Filter es una tabla hash que especifica un valor CustomID. Este valor CustomID son los metadatos de la tarea (PSPrivateMetadata).

Ejemplo 4: Esperar a que el trabajo de flujo de trabajo se suspenda

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

Este comando suspende la tarea del flujo de trabajo VersionCheck. El comando usa el parámetro Wait para esperar hasta que se suspenda la tarea del flujo de trabajo. Cuando el trabajo de flujo de trabajo se ejecuta en el siguiente punto de control y se suspende, el comando finaliza y devuelve el objeto de trabajo.

Ejemplo 5: Forzar la suspensión de un trabajo de flujo de trabajo

PS C:\> Suspend-Job Maintenance -Force

Este comando suspende a la fuerza la tarea del flujo de trabajo Maintenance. El trabajo mantenimiento no tiene puntos de control. No se puede suspender correctamente y es posible que no se reanude correctamente.

Parámetros

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

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

-Filter

Especifica una tabla hash de condiciones. Este cmdlet suspende los trabajos que cumplen todas las condiciones. Especifique una tabla hash donde las claves sean propiedades de una tarea y los valores sean valores de propiedad de la tarea.

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

-Force

Suspende inmediatamente la tarea del flujo de trabajo. Esta acción podría provocar una pérdida de estado y datos.

De forma predeterminada, Suspend-Job permite que la tarea del flujo de trabajo se ejecute hasta el punto de control siguiente y, a continuación, se suspende. También puede usar este parámetro para suspender las tareas del flujo de trabajo que no tengan puntos de control.

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

-Id

Especifica los identificadores de los trabajos que suspende este cmdlet.

El identificador es un entero que identifica de forma única el trabajo en la sesión actual. Es más fácil recordar y escribir que el identificador de instancia, pero solo es único en la sesión actual. Puede escribir uno o varios identificadores, separados por comas. Para buscar el identificador de un trabajo, use el cmdlet Get-Job.

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

-InstanceId

Especifica los identificadores de instancia de los trabajos que suspende este cmdlet. El valor predeterminado es todas las tareas.

Un identificador de instancia es un GUID que identifica de forma única la tarea en el equipo. Para buscar el identificador de instancia de un trabajo, use Get-Job.

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

-Job

Especifica los trabajos de flujo de trabajo que detiene este cmdlet. Escriba una variable que contenga las tareas del flujo de trabajo o un comando que obtenga las tareas del flujo de trabajo. También se pueden canalizar las tareas del flujo de trabajo al cmdlet Suspend-Job.

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

-Name

Especifica los nombres descriptivos de los trabajos que suspende este cmdlet. Escriba uno o más nombres de tareas del flujo de trabajo. Se admite el uso de caracteres comodín.

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

-State

Especifica un estado de trabajo. Este cmdlet detiene solo los trabajos en el estado especificado. Los valores permitidos para este parámetro son los siguientes:

  • NotStarted
  • En ejecución
  • Completed
  • Con error
  • Detenido
  • Bloqueado
  • Suspended
  • Escenario desconectado
  • Suspendiendo
  • Deteniéndose

Suspend-Job suspende solo los trabajos de flujo de trabajo en estado En ejecución .

Para obtener más información sobre los estados de trabajo, vea Enumeración JobState en MSDN Library.

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 que este cmdlet suprime el símbolo del sistema hasta que el trabajo de flujo de trabajo esté en estado suspendido. De forma predeterminada, Suspend-Job devuelve inmediatamente, incluso si el trabajo de flujo de trabajo aún no está en estado suspendido.

El parámetro Wait equivale a canalizar 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

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

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

Entradas

Job

Puede canalizar todos los tipos de trabajos a este cmdlet. Sin embargo, si Suspend-Job obtiene un trabajo de un tipo no admitido, devuelve un error de terminación.

Salidas

Job

Este cmdlet devuelve los trabajos suspendidos.

Notas

  • El mecanismo y la ubicación para guardar una tarea suspendida pueden variar según el tipo de tarea. Por ejemplo, las tareas del flujo de trabajo suspendidas se guardan en un almacén de archivos sin formato de manera predeterminada, pero también pueden guardarse en una base de datos.

  • Si envía una tarea del flujo de trabajo que no tenga el estado Running, Suspend-Job muestra un mensaje de advertencia. Para suprimir la advertencia, use el parámetro común WarningAction con un valor de SilentlyContinue.

    Si un trabajo no es de un tipo que admite la suspensión, Suspend-Job devuelve un error de terminación.

  • Para buscar los trabajos de flujo de trabajo suspendidos, incluidos los suspendidos por este cmdlet, use el parámetro State del cmdlet Get-Job para obtener trabajos de flujo de trabajo en estado Suspendido.

  • Algunos tipos de tarea tienen opciones o propiedades que impiden que Windows PowerShell suspenda la tarea. Si se intenta suspender el trabajo, compruebe que las opciones y propiedades del trabajo permiten suspenderse.