Remove-Job

Elimina un trabajo en segundo plano de PowerShell.

Syntax

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

Description

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

Puede usar Remove-Job para eliminar todos los trabajos o eliminar los trabajos seleccionados. Los trabajos se identifican por su nombre, identificador, identificador de instancia, comando o estado. O bien, un objeto de trabajo se puede enviar por la canalización a Remove-Job. Sin parámetros ni valores de parámetro, Remove-Job no tiene ningún efecto.

Dado que 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 se produce un error. Use el Stop-Job cmdlet 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 usa una variable y la canalización para eliminar un trabajo por 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 $batch variable . El objeto de $batch se envía por la canalización a Remove-Job.

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

Ejemplo 2: Eliminación de 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 de la sesión actual de PowerShell. Los objetos de trabajo se envían por la canalización a Remove-Job.

Ejemplo 3: Eliminar 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: Eliminación de trabajos mediante un nombre descriptivo

En este ejemplo se eliminan todos los trabajos de la sesión actual con nombres descriptivos que terminan por lotes*, incluidos los trabajos que se ejecutan.

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 asterisco (*) para buscar todos los nombres de trabajo que terminan por lotes. El parámetro Force elimina los trabajos que se ejecutan.

Ejemplo 5: Eliminación de 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, use 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 ScriptBlock como un trabajo en segundo plano. El objeto de trabajo se almacena en la $job variable . El $job objeto variable se envía a la canalización a Remove-Job.

Ejemplo 6: Eliminación de un trabajo creado por Invoke-Command e Start-Job

En este ejemplo se muestra cómo quitar un trabajo en un equipo remoto que se inició mediante 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 remoto Start-Job .

$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 $S variable .

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

Invoke-Command usa la $S sesión 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 $job variable .

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.

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

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 .Start-Job

Este parámetro se incorporó en PowerShell 3.0.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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

-Id

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

Para buscar el identificador de un trabajo, use Get-Job sin parámetros.

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

-InstanceId

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

Para buscar instanceId 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 que se van a eliminar. Escriba 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 por la canalización a Remove-Job.

Type:Job[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 descriptivos 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.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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
  • Escenario desconectado
  • Con error
  • NotStarted
  • En ejecución
  • Detenido
  • Deteniéndose
  • Suspendida
  • Suspendiendo
Type:JobState
Accepted values:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Muestra lo que sucedería si Remove-Job se ejecutase. 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 un objeto Job a este cmdlet.

Salidas

None

Este cmdlet no devuelve ningún resultado.

Notas

Windows PowerShell incluye los siguientes alias para Remove-Job:

  • rjb

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

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