Suspend-Job
Detiene temporalmente las tareas del flujo de trabajo.
Sintaxis
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>]
Description
El Suspend-Job
cmdlet 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 Suspend-Job
cmdlet solo funciona en trabajos de flujo de trabajo. No funciona en trabajos en segundo plano estándar, como los que se inician mediante el Start-Job
cmdlet .
Para identificar un trabajo de flujo de trabajo, busque un valor de PSWorkflowJob en la propiedad PSJobTypeName del trabajo. Para determinar si un tipo de trabajo personalizado determinado admite el Suspend-Job
cmdlet, consulte los temas de ayuda del tipo de trabajo personalizado.
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 Wait-Job
cmdlet . 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 de 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) importa el módulo que admite el tipo de trabajo personalizado, ya sea mediante el Import-Module
cmdlet 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
Este ejemplo muestra cómo suspender una tarea del flujo de trabajo.
El primer comando crea el flujo de Get-SystemLog
trabajo. El flujo de trabajo usa la CheckPoint-Workflow
actividad para definir un punto de control en el flujo de trabajo.
El segundo comando usa el parámetro AsJob que es común a todos los flujos de trabajo para ejecutar el Get-SystemLog
flujo de trabajo como un trabajo en segundo plano. El comando usa el parámetro común de flujo de trabajo JobName para especificar un nombre descriptivo para el trabajo de flujo de trabajo.
El tercer comando usa el Get-Job
cmdlet para obtener el trabajo de LogflowJob
flujo de trabajo. La salida muestra que el valor de la propiedad PSJobTypeName es PSWorkflowJob.
El cuarto comando usa el Suspend-Job
cmdlet para suspender el LogflowJob
trabajo. El trabajo se ejecuta en el punto de control y, a continuación, se suspende.
#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
Ejemplo 2: Suspender y reanudar un trabajo de flujo de trabajo
Este ejemplo muestra cómo suspender y reanudar una tarea del flujo de trabajo.
El primer comando suspende el trabajo LogWorkflowJob. El comando devuelve inmediatamente. La salida muestra que el trabajo de flujo de trabajo sigue en ejecución, aunque se suspenda.
El segundo comando usa el Get-Job
cmdlet para obtener el trabajo logWorkflowJob. La salida muestra que el trabajo de flujo de trabajo se suspendió correctamente.
El tercer comando usa el Get-Job
cmdlet para obtener el trabajo LogWorkflowJob y el Resume-Job
cmdlet para reanudarlo. La salida muestra que el trabajo de flujo de trabajo se reanudó correctamente y que ahora se está ejecutando.
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
Ejemplo 3: Suspender un trabajo de flujo de trabajo en un equipo remoto
Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}
Este comando usa el Invoke-Command
cmdlet 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 CustomID es metadatos de trabajo (PSPrivateMetadata).
Ejemplo 4: Esperar a que el trabajo de flujo de trabajo se suspenda
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 el trabajo de 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
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.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | Hashtable |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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, permite que el trabajo de flujo de trabajo se ejecute hasta el siguiente punto de control y, a continuación, Suspend-Job
lo suspenda.
También puede usar este parámetro para suspender las tareas del flujo de trabajo que no tengan puntos de control.
Tipo: | SwitchParameter |
Alias: | F |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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 Get-Job
cmdlet .
Tipo: | Int32[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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
.
Tipo: | Guid[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 puede canalizar los trabajos de Suspend-Job
flujo de trabajo al cmdlet .
Tipo: | Job[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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
- Completado
- Errónea
- 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 JobState (enumeración).
Tipo: | JobState |
Valores aceptados: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 es equivalente a canalizar un Suspend-Job
comando al Wait-Job
cmdlet .
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
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
Este cmdlet devuelve los trabajos que suspendió.
Notas
Windows PowerShell incluye los siguientes alias para Suspend-Job
:
sujb
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 un trabajo de flujo de trabajo que no está en estado En ejecución, 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 Get-Job
cmdlet 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 suspender.