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
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.