Stop-Job
Detiene un trabajo en segundo plano de PowerShell.
Sintaxis
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El Stop-Job
cmdlet 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 Start-Job
cmdlet 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. Ninguna tarea nueva se agrega a la cola después de enviar este comando.
Este cmdlet no elimina los trabajos en segundo plano. Para eliminar un trabajo, use el Remove-Job
cmdlet .
A partir de Windows PowerShell 3.0, Stop-Job
también detiene los tipos de trabajo personalizados, como WorkflowJobs e instancias de ScheduledJobs. 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 Stop-Job
comando, ya sea mediante el Import-Module
cmdlet o mediante o la obtención de un cmdlet en el módulo. Para información sobre un tipo determinado de trabajo personalizado, vea la documentación de la característica del tipo de trabajo personalizado.
Ejemplos
Ejemplo 1: Detener un trabajo en un equipo remoto con Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
En este ejemplo se muestra cómo usar el Stop-Job
cmdlet para detener un trabajo que se ejecuta en un equipo remoto.
Dado que el trabajo se inició con el Invoke-Command
cmdlet para ejecutar un Start-Job
comando de forma remota, el objeto de trabajo se almacena en el equipo remoto. Debe usar otro Invoke-Command
comando para ejecutar un Stop-Job
comando de forma remota. Para más información sobre los trabajos en segundo plano remotos, vea la página 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 $s
variable . El comando usa las credenciales de un administrador de dominio.
El segundo comando usa el Invoke-Command
cmdlet para ejecutar un Start-Job
comando en la sesión. El comando del trabajo obtiene todos los eventos en el registro de eventos del sistema. El objeto de trabajo resultante se almacena en la $j
variable .
El tercer comando detiene el trabajo. Usa el Invoke-Command
cmdlet para ejecutar un Stop-Job
comando en PSSession en Server01. Dado que los objetos de trabajo se almacenan en $j
, que es una variable en el equipo local, el comando usa el modificador Using scope para identificar $j
como una variable local. Para obtener más información sobre el modificador Using scope (Uso del modificador de ámbito), consulte about_Remote_Variables.
Cuando el comando finaliza, el trabajo se detiene y la PSSession de $s
está disponible para su uso.
Ejemplo 2: Detener un trabajo en segundo plano
Stop-Job -Name "Job1"
Este comando detiene el Job1
trabajo en segundo plano.
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 en 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 por 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 InstanceID.
El primer comando usa el Get-Job
cmdlet para obtener los trabajos en la sesión actual. El comando usa un operador de canalización (|
) para enviar los trabajos a un Format-Table
comando, que muestra una tabla de las propiedades especificadas de cada trabajo. La tabla incluye instanceID de cada trabajo. Usa una propiedad calculada para mostrar el estado del trabajo.
El segundo comando usa un Stop-Job
comando 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 -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...
En este ejemplo se muestra cómo usar el Stop-Job
cmdlet para detener un trabajo que se ejecuta en un equipo remoto.
Dado que el trabajo se inició con el parámetro AsJob del Invoke-Command
cmdlet , el objeto Job 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 Invoke-Command
cmdlet 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 Start-Job
cmdlet.
El comando guarda el objeto de trabajo en la $j
variable .
El segundo comando usa un operador de canalización para enviar el trabajo de la $j
variable a Stop-Job
. El comando usa el parámetro PassThru para dirigir Stop-Job
para devolver un objeto de trabajo. La presentación del objeto de trabajo confirma que el estado del trabajo es Detenido.
Para obtener más información sobre los trabajos en segundo plano remotos, consulte about_Remote_Jobs.
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 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 WorkflowJobs y ScheduledJobs. No funciona en trabajos en segundo plano estándar, como los creados mediante el Start-Job
cmdlet .
Para información sobre la compatibilidad para este parámetro, vea el tema de ayuda para el tipo de trabajo.
Este parámetro se incorporó en Windows PowerShell 3.0.
Tipo: | Hashtable |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 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, escriba Get-Job
.
Tipo: | Int32[] |
Posición: | 0 |
Valor predeterminado: | All jobs |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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
.
Tipo: | Guid[] |
Posición: | 0 |
Valor predeterminado: | All jobs |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Job
Especifica los trabajos que detiene este cmdlet. Escriba 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 Stop-Job
cmdlet . De forma predeterminada, Stop-Job
elimina todos los trabajos que se iniciaron en la sesión actual.
Tipo: | Job[] |
Posición: | 0 |
Valor predeterminado: | All jobs |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 escribir 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 los parámetros WhatIf y Confirm al detener trabajos por nombre.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | All jobs |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | True |
-PassThru
Devuelve un objeto que representa el elemento con el que está trabajando. De forma predeterminada, este cmdlet no genera ningún resultado.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
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
Running
Completed
Failed
Stopped
Blocked
Suspended
Disconnected
Suspending
Stopping
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: | All jobs |
Requerido: | True |
Aceptar entrada de canalización: | True |
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
System.Management.Automation.RemotingJob
Puede canalizar un objeto de trabajo a este cmdlet.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
System.Management.Automation.PSRemotingJob
Cuando se usa el parámetro PassThru , este cmdlet devuelve un objeto de trabajo.
Notas
PowerShell incluye los siguientes alias para Stop-Job
:
- Todas las plataformas:
spjb