Compartir a través de


Remove-Job

Elimina un trabajo en segundo plano de PowerShell.

Sintaxis

Remove-Job
      [-Force]
      [-Id] <Int32[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Job] <Job[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Force]
      [-Name] <String[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Force]
      [-InstanceId] <Guid[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Force]
      [-Filter] <Hashtable>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-State] <JobState>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Command <String[]>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Description

El cmdlet Remove-Job elimina los trabajos en segundo plano de PowerShell iniciados por el cmdlet Start-Job o por cmdlets como Invoke-Command que admiten el parámetro AsJob.

Puede usar Remove-Job para eliminar todos los trabajos o eliminar trabajos seleccionados. Los trabajos se identifican mediante su Name, Id., InstanceId, Commando state State. O bien, se puede enviar un objeto de trabajo por la canalización a Remove-Job. Sin parámetros ni valores de parámetros, Remove-Job no tiene ningún efecto.

Desde PowerShell 3.0, Remove-Job puede eliminar tipos de trabajo personalizados, como trabajos programados y trabajos de flujo de trabajo. Por ejemplo, Remove-Job elimina el trabajo programado, todas las instancias del trabajo programado en el disco y los resultados de todas las instancias de trabajo desencadenadas.

Si intenta eliminar un trabajo en ejecución, Remove-Job produce un error. Use el cmdlet Stop-Job para detener un trabajo en ejecución. O bien, use Remove-Job con el parámetro Force para eliminar un trabajo en ejecución.

Los trabajos permanecen en la caché global de trabajos hasta que elimine el trabajo en segundo plano o cierre la sesión de PowerShell.

Ejemplos

Ejemplo 1: Eliminación de un trabajo mediante su nombre

En este ejemplo se utiliza una variable y la canalización para eliminar una tarea por su nombre.

$batch = Get-Job -Name BatchJob
$batch | Remove-Job

Get-Job usa el parámetro Name para especificar el trabajo, BatchJob. El objeto de trabajo se almacena en la variable $batch. El objeto de $batch se envía por la canalización a Remove-Job.

Una alternativa consiste en usar el parámetro Job, como Remove-Job -Job $batch.

Ejemplo 2: Eliminar todos los trabajos de una sesión

En este ejemplo, se eliminan todos los trabajos de la sesión actual de PowerShell.

Get-Job | Remove-Job

Get-Job obtiene todos los trabajos en la sesión actual de PowerShell. Los objetos de trabajo se envían por la canalización a Remove-Job.

Ejemplo 3: Eliminar los trabajos NotStarted

En este ejemplo se eliminan todos los trabajos de la sesión actual de PowerShell que no se han iniciado.

Remove-Job -State NotStarted

Remove-Job usa el parámetro state para especificar el estado del trabajo.

Ejemplo 4: Eliminar trabajos mediante un nombre descriptivo

En este ejemplo se eliminan todos los trabajos de la sesión actual con nombres amigables que terminan con lote, incluidos los trabajos que se están ejecutando.

Remove-Job -Name *batch -Force

Remove-Job usa el parámetro Name para especificar un patrón de nombre de trabajo. El patrón incluye el carácter comodín de asterisco (*) para buscar todos los nombres de trabajo que terminan con batch. El parámetro Force elimina los trabajos que están ejecutándose.

Ejemplo 5: Eliminar un trabajo creado por Invoke-Command

En este ejemplo se quita un trabajo que se inició en un equipo remoto mediante Invoke-Command con el parámetro AsJob.

Dado que en el ejemplo se usa el parámetro AsJob, el objeto de trabajo se crea en el equipo local. Pero el trabajo se ejecuta en un equipo remoto. Como resultado, se usan comandos locales para administrar el trabajo.

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-Command ejecuta un trabajo en el equipo Server01. El parámetro AsJob ejecuta el ScriptBlock como un trabajo en segundo plano. El objeto de trabajo se almacena en la variable $job. El objeto de variable $job se envía por la canalización a Remove-Job.

Ejemplo 6: Eliminar un trabajo creado por Invoke-Command y Start-Job

En este ejemplo se muestra cómo eliminar una tarea en un equipo remoto que fue iniciada usando Invoke-Command para ejecutar Start-Job. El objeto de trabajo se crea en el equipo remoto y los comandos remotos se usan para administrar el trabajo. Se requiere una conexión persistente al ejecutar un comando de Start-Job remoto.

$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}

New-PSSession crea una PSSession, una conexión persistente, al equipo Server01. La conexión se guarda en la variable $S.

Invoke-Command se conecta a la sesión guardada en $S. El ScriptBlock usa Start-Job para iniciar un trabajo remoto. El trabajo ejecuta un comando Get-Process y usa el parámetro Name para especificar un nombre descriptivo para el trabajo, MyJob.

Invoke-Command usa la sesión de $S y ejecuta Remove-Job. El parámetro Name especifica que se elimina el trabajo denominado MyJob.

Ejemplo 7: Eliminación de un trabajo mediante su InstanceId

En este ejemplo se quita un trabajo basado en su InstanceId.

$job = Start-Job -ScriptBlock {Get-Process powershell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872

State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-Process powershell
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : ad02b942-8007-4407-87f3-d23e71955872
Id            : 3
Name          : Job3
ChildJobs     : {Job4}
PSBeginTime   : 7/26/2019 11:36:56
PSEndTime     : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-Job inicia un trabajo en segundo plano y el objeto de trabajo se guarda en la variable $job.

El objeto de $job se envía por la canalización a Format-List. El parámetro Property usa un asterisco (*) para especificar que todas las propiedades del objeto se muestran en una lista.

Remove-Job usa el parámetro InstanceId para especificar el trabajo que se va a eliminar.

Parámetros

-Command

Elimina los trabajos que incluyen las palabras especificadas en el comando . Puede escribir una matriz separada por comas.

Tipo:String[]
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Confirm

Le pide confirmación antes de que se ejecute Remove-Job.

Tipo:SwitchParameter
Alias:cf
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Filter

Elimina los trabajos que cumplen todas las condiciones establecidas en la tabla hash asociada. 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 Start-Job.

Este parámetro se presenta en PowerShell 3.0.

Tipo:Hashtable
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Force

Elimina un trabajo incluso si el estado del trabajo es En ejecución. Si no se especifica el parámetro Force, Remove-Job no elimina los trabajos en ejecución.

Tipo:SwitchParameter
Alias:F
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Id

Elimina los trabajos en segundo plano con el identificador especificado. Puede escribir una matriz separada por comas. El Id del trabajo es un entero único que identifica un trabajo dentro de la sesión actual.

Para encontrar el Id de un trabajo , use Get-Job sin parámetros.

Tipo:Int32[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-InstanceId

Elimina los trabajos con el InstanceId especificado. Puede escribir una matriz separada por comas. Un InstanceId es un GUID único que identifica una tarea.

Para buscar el InstanceId 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 que se van a eliminar. Ingrese una variable que contenga las tareas o un comando que obtenga las tareas. Puede escribir una matriz separada por comas.

Puede enviar objetos de trabajo a la canalización a Remove-Job.

Tipo:Job[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Name

Solo elimina los trabajos con el nombre descriptivo especificado. Se permiten los caracteres comodín. Puede escribir una matriz separada por comas.

No se garantiza que los nombres amigables de los trabajos sean únicos, incluso dentro de una sesión de PowerShell. Use los parámetros WhatIf y Confirm al eliminar archivos por nombre.

Tipo:String[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:True

-State

Solo elimina los trabajos con el estado especificado. Para eliminar trabajos con un estado En ejecución, use el parámetro Force.

Valores aceptados:

  • AtBreakpoint
  • Bloqueado
  • Completado
  • Desconectado
  • Fracasado
  • NotStarted
  • Correr
  • Detenido
  • Parar
  • Suspendido
  • Suspendiendo
Tipo:JobState
Valores aceptados:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-WhatIf

Muestra lo que ocurriría si se ejecutara Remove-Job. 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

Job

Puede canalizar un objeto Job a este cmdlet.

Salidas

None

Este cmdlet no devuelve ninguna salida.

Notas

PowerShell incluye los siguientes alias para Remove-Job:

  • Todas las plataformas:
    • rjb

Un trabajo de PowerShell crea un nuevo proceso. Cuando se completa el trabajo, se cierra el proceso. Cuando se ejecuta Remove-Job, el estado del trabajo se elimina.

Si un trabajo se detiene antes de la finalización y su proceso no se ha cerrado, el proceso se termina forzosamente.