Compartir a través de


Remove-Job

Elimina un trabajo en segundo plano de PowerShell.

Sintaxis

SessionIdParameterSet (Es el valor predeterminado).

Remove-Job
    [-Id] <Int32[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Remove-Job
    [-Job] <Job[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Remove-Job
    [-Name] <String[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Remove-Job
    [-InstanceId] <Guid[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Remove-Job
    [-Filter] <Hashtable>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Remove-Job
    [-State] <JobState>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

CommandParameterSet

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.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

CommandParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-Confirm

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

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:cf

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:Hashtable
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

FilterParameterSet
Posición:0
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:F

Conjuntos de parámetros

SessionIdParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
JobParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
InstanceIdParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
NameParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
FilterParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:

Int32[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

SessionIdParameterSet
Posición:0
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:

Guid[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

InstanceIdParameterSet
Posición:0
Mandatory: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 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.

Propiedades del parámetro

Tipo:

Job[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

JobParameterSet
Posición:0
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes: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.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

NameParameterSet
Posición:0
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-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

Propiedades del parámetro

Tipo:JobState
Valor predeterminado:None
Valores aceptados:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

StateParameterSet
Posición:0
Mandatory: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 ocurriría si se ejecuta Remove-Job. El cmdlet no se ejecuta.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:Wi

Conjuntos de parámetros

(All)
Posición:Named
Mandatory: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

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.