Stop-Job
Detiene un trabajo en segundo plano de PowerShell.
Sintaxis
SessionIdParameterSet (valor predeterminado)
Stop-Job
[-Id] <Int32[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
JobParameterSet
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
NameParameterSet
Stop-Job
[-Name] <String[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceIdParameterSet
Stop-Job
[-InstanceId] <Guid[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
StateParameterSet
Stop-Job
[-State] <JobState>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
FilterParameterSet
Stop-Job
[-Filter] <Hashtable>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El cmdlet Stop-Job detiene los trabajos en segundo plano de PowerShell que están en curso. Puede usar este cmdlet para detener todos los trabajos o detener los trabajos seleccionados en función de su nombre, identificador, identificador de instancia o estado, o pasando un objeto de trabajo a Stop-Job.
Puede usar stop-job para detener trabajos en segundo plano, como los que se iniciaron mediante el cmdlet Start-Job o el parámetro AsJob de cualquier cmdlet. Al detener un trabajo en segundo plano, PowerShell completa todas las tareas pendientes en esa cola de trabajos y, a continuación, finaliza el trabajo. No se agregan nuevas tareas a la cola después de enviar este comando.
Este cmdlet no elimina trabajos en segundo plano. Para eliminar un trabajo, use el cmdlet Remove-Job.
A partir de Windows PowerShell 3.0, stop-job también detiene los tipos de trabajo personalizados, como trabajos de flujo de trabajo e instancias de trabajos programados. Para habilitar stop-job para detener un trabajo con un tipo de trabajo personalizado, importe el módulo que admite el tipo de trabajo personalizado en la sesión antes de ejecutar un comando Stop-Job, ya sea mediante el cmdlet Import-Module o mediante o obtener un cmdlet en el módulo. Para obtener información sobre un tipo de trabajo personalizado determinado, consulte la documentación de la característica de tipo de trabajo personalizado.
Ejemplos
Ejemplo 1: Detener un trabajo en un equipo remoto mediante Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
En este ejemplo se muestra cómo usar el cmdlet Stop-Job para detener un trabajo que se ejecuta en un equipo remoto.
Dado que el trabajo se inició mediante el cmdlet Invoke-Command para ejecutar un comando Start-Job de forma remota, el objeto de trabajo se almacena en el equipo remoto. Debe usar otro comando Invoke-Command para ejecutar un comando Stop-Job de forma remota. Para obtener más información sobre los trabajos en segundo plano remotos, consulte about_Remote_Jobs.
El primer comando crea una sesión de PowerShell (PSSession) en el equipo Server01 y, a continuación, almacena el objeto de sesión en la variable $s. El comando usa las credenciales de un administrador de dominio.
El segundo comando usa el cmdlet Invoke-Command para ejecutar un comando Start-Job en la sesión. El comando del trabajo obtiene todos los eventos del registro de eventos del sistema. El objeto de trabajo resultante se almacena en la variable $j.
El tercer comando detiene el trabajo.
Usa el cmdlet Invoke-Command de
Cuando el comando finaliza, el trabajo se detiene y el de PSSession de
Ejemplo 2: Detener un trabajo en segundo plano
Stop-Job -Name "Job1"
Este comando detiene el trabajo en segundo plano job1.
Ejemplo 3: Detener varios trabajos en segundo plano
Stop-Job -Id 1, 3, 4
Este comando detiene tres trabajos. Los identifica por sus identificadores.
Ejemplo 4: Detener todos los trabajos en segundo plano
Get-Job | Stop-Job
Este comando detiene todos los trabajos en segundo plano de la sesión actual.
Ejemplo 5: Detener todos los trabajos en segundo plano bloqueados
Stop-Job -State Blocked
Este comando detiene todos los trabajos que están bloqueados.
Ejemplo 6: Detener un trabajo mediante un identificador de instancia
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
Estos comandos muestran cómo detener un trabajo en función de su identificador de instancia.
El primer comando usa el cmdlet Get-Job para obtener los trabajos de la sesión actual. El comando usa un operador de canalización (|) para enviar los trabajos a un comando Format-Table, que muestra una tabla de las propiedades especificadas de cada trabajo. La tabla incluye el identificador de instancia de cada trabajo. Usa una propiedad calculada para mostrar el estado del trabajo.
El segundo comando usa un comando Stop-Job que tiene el parámetro InstanceID para detener un trabajo seleccionado.
Ejemplo 7: Detener un trabajo en un equipo remoto
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet get-eventlog system
En este ejemplo se muestra cómo usar el cmdlet Stop-Job para detener un trabajo que se ejecuta en un equipo remoto.
Dado que el trabajo se inició mediante el AsJob parámetro del cmdlet Invoke-Command, el objeto de trabajo se encuentra en el equipo local, aunque el trabajo se ejecute en el equipo remoto. Por lo tanto, puede usar un comando local Stop-Job para detener el trabajo.
El primer comando usa el cmdlet Invoke-Command para iniciar un trabajo en segundo plano en el equipo Server01. El comando usa el parámetro AsJob para ejecutar el comando remoto como un trabajo en segundo plano.
Este comando devuelve un objeto de trabajo, que es el mismo objeto de trabajo que devuelve el cmdlet Start-Job
El segundo comando usa un operador de canalización para enviar el trabajo en la variable $j a Stop-Job.
El comando usa el parámetro
Para obtener más información sobre los trabajos en segundo plano remotos, consulte about_Remote_Jobs.
Parámetros
-Confirm
Le pide confirmación antes de ejecutar el cmdlet.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | cf |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Filter
Especifica una tabla hash de condiciones. Este cmdlet detiene 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.
Este parámetro solo funciona en tipos de trabajo personalizados, como trabajos de flujo de trabajo y trabajos programados.
No funciona en trabajos en segundo plano estándar, como los creados mediante el cmdlet Start-Job de
Este parámetro se introdujo en Windows PowerShell 3.0.
Propiedades de parámetro
| Tipo: | Hashtable |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
FilterParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-Id
Especifica los identificadores de los trabajos que detiene este cmdlet. El valor predeterminado es todos los trabajos de la sesión actual.
El identificador es un entero que identifica de forma única la tarea 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, escriba Get-Job.
Propiedades de parámetro
| Tipo: | Int32[] |
| Valor predeterminado: | All jobs |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
SessionIdParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-InstanceId
Especifica los identificadores de instancia de los trabajos que detiene 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.
Propiedades de parámetro
| Tipo: | Guid[] |
| Valor predeterminado: | All jobs |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
InstanceIdParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-Job
Especifica los trabajos que detiene este cmdlet. Ingrese una variable que contenga las tareas o un comando que obtenga las tareas. También puede usar un operador de canalización para enviar trabajos al cmdlet Stop-Job. De forma predeterminada, Stop-Job elimina todos los trabajos que se iniciaron en la sesión actual.
Propiedades de parámetro
| Tipo: | Job[] |
| Valor predeterminado: | All jobs |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
JobParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-Name
Especifica los nombres descriptivos de los trabajos que detiene este cmdlet. Escriba los nombres de trabajo en una lista separada por comas o use caracteres comodín (*) para especificar un patrón de nombre de trabajo. De forma predeterminada, stop-job detiene todos los trabajos creados en la sesión actual.
Dado que no se garantiza que el nombre descriptivo sea único, use el WhatIf y Confirmar parámetros al detener trabajos por nombre.
Propiedades de parámetro
| Tipo: | String[] |
| Valor predeterminado: | All jobs |
| Admite caracteres comodín: | True |
| DontShow: | False |
Conjuntos de parámetros
NameParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-PassThru
Devuelve un objeto que representa el elemento con el que está trabajando. De forma predeterminada, este cmdlet no genera ninguna salida.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-State
Especifica un estado de trabajo. Este cmdlet detiene solo los trabajos en el estado especificado. Los valores aceptables para este parámetro son:
- NotStarted
- Correr
- Completado
- Fracasado
- Detenido
- Bloqueado
- Suspendido
- Desconectado
- Suspendiendo
- Parar
Para obtener más información sobre los estados de trabajo, consulte enumeración JobState en MSDN Library.
Propiedades de parámetro
| Tipo: | JobState |
| Valor predeterminado: | All jobs |
| Valores aceptados: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
StateParameterSet
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-WhatIf
Muestra lo que sucedería si el cmdlet se ejecuta. El cmdlet no se ejecuta.
Propiedades de parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | False |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Wi |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
System.Management.Automation.RemotingJob
Puede canalizar un objeto de trabajo a este cmdlet.
Salidas
None, System.Management.Automation.PSRemotingJob
Este cmdlet devuelve un objeto de trabajo, si especifica el parámetro PassThru. De lo contrario, este cmdlet no genera ninguna salida.