Remove-Job
Elimina uma tarefa em segundo plano do 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
[-Filter] <Hashtable>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-InstanceId] <Guid[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
O Remove-Job
cmdlet elimina tarefas em segundo plano do Start-Job
PowerShell que foram iniciadas pelo cmdlet ou por cmdlets como Invoke-Command
os que suportam o parâmetro AsJob .
Pode utilizar Remove-Job
para eliminar todas as tarefas ou eliminar tarefas selecionadas. As tarefas são identificadas pelo respetivo Nome, ID, ID de Instância, Comando ou Estado. Em alternativa, um objeto de tarefa pode ser enviado pelo pipeline para Remove-Job
. Sem parâmetros ou valores de parâmetros, Remove-Job
não tem efeito.
Uma vez que o PowerShell 3.0 Remove-Job
pode eliminar tipos de tarefas personalizados, como tarefas agendadas e tarefas de fluxo de trabalho. Por exemplo, Remove-Job
elimina a tarefa agendada, todas as instâncias da tarefa agendada no disco e os resultados de todas as instâncias de tarefas acionadas.
Se tentar eliminar uma tarefa em execução, Remove-Job
falha. Utilize o Stop-Job
cmdlet para parar uma tarefa em execução. Em alternativa, utilize Remove-Job
com o parâmetro Forçar para eliminar uma tarefa em execução.
As tarefas permanecem na cache de tarefas global até eliminar a tarefa em segundo plano ou fechar a sessão do PowerShell.
Exemplos
Exemplo 1: eliminar uma tarefa com o respetivo nome
Este exemplo utiliza uma variável e o pipeline para eliminar uma tarefa por nome.
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
utiliza o parâmetro Nome para especificar a tarefa BatchJob. O objeto de tarefa é armazenado na $batch
variável. O objeto no $batch
é enviado pelo pipeline para Remove-Job
.
Uma alternativa é utilizar o parâmetro Tarefa , como Remove-Job -Job $batch
.
Exemplo 2: Eliminar todas as tarefas numa sessão
Neste exemplo, todas as tarefas na sessão atual do PowerShell são eliminadas.
Get-job | Remove-Job
Get-Job
obtém todas as tarefas na sessão atual do PowerShell. Os objetos da tarefa são enviados pelo pipeline para Remove-Job
.
Exemplo 3: Eliminar tarefas Não Inicializadas
Este exemplo elimina todas as tarefas da sessão atual do PowerShell que ainda não foram iniciadas.
Remove-Job -State NotStarted
Remove-Job
utiliza o parâmetro Estado para especificar o estado da tarefa.
Exemplo 4: Eliminar tarefas com um nome amigável
Este exemplo elimina todas as tarefas da sessão atual com nomes amigáveis que terminam com batch*, incluindo tarefas em execução.
Remove-Job -Name *batch -Force
Remove-Job
utiliza o parâmetro Nome para especificar um padrão de nome de tarefa. O padrão inclui o caráter universal asterisco (*
) para encontrar todos os nomes de tarefas que terminem com lote. O parâmetro Force elimina as tarefas em execução.
Exemplo 5: eliminar uma tarefa criada pelo Invoke-Command
Este exemplo remove uma tarefa iniciada num computador remoto com Invoke-Command
o parâmetro AsJob .
Uma vez que o exemplo utiliza o parâmetro AsJob , o objeto de tarefa é criado no computador local. Mas o trabalho é executado num computador remoto. Como resultado, utiliza comandos locais para gerir a tarefa.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
executa uma tarefa no computador Server01 . O parâmetro AsJob executa o ScriptBlock como uma tarefa em segundo plano. O objeto de tarefa é armazenado na $job
variável. O $job
objeto de variável é enviado pelo pipeline para Remove-Job
.
Exemplo 6: eliminar uma tarefa criada por Invoke-Command e Start-Job
Este exemplo mostra como remover uma tarefa num computador remoto que foi iniciado utilizando Invoke-Command
para executar Start-Job
. O objeto de tarefa é criado no computador remoto e os comandos remotos são utilizados para gerir a tarefa. É necessária uma ligação persistente ao executar um 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
cria uma PSSession, uma ligação persistente, ao computador Server01 . A ligação é guardada na $S
variável.
Invoke-Command
liga à sessão guardada em $S
. O ScriptBlock utiliza Start-Job
para iniciar uma tarefa remota. A tarefa executa um Get-Process
comando e utiliza o parâmetro Nome para especificar um nome de tarefa amigável, MyJob.
Invoke-Command
utiliza a $S
sessão e executa Remove-Job
. O parâmetro Nome especifica que a tarefa denominada MyJob é eliminada.
Exemplo 7: Eliminar uma tarefa com o InstanceId
Este exemplo remove uma tarefa com base no 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 uma tarefa em segundo plano e o objeto da tarefa é guardado na $job
variável.
O objeto no $job
é enviado pelo pipeline para Format-List
. O parâmetro Propriedade utiliza um asterisco (*
) para especificar que todas as propriedades do objeto são apresentadas numa lista.
Remove-Job
utiliza o parâmetro InstanceId para especificar a tarefa a eliminar.
Parâmetros
-Command
Elimina tarefas que incluem as palavras especificadas no comando. Pode introduzir uma matriz separada por vírgulas.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Pede-lhe confirmação antes Remove-Job
de ser executado.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Elimina as tarefas que cumprem todas as condições estabelecidas na tabela hash associada. Introduz uma tabela hash na qual as chaves são propriedades da tarefa e os valores são valores da propriedade da tarefa.
Este parâmetro funciona apenas em tipos de trabalho personalizados, como tarefas de fluxo de trabalho e tarefas agendadas. Não funciona em tarefas em segundo plano padrão, como as criadas com o Start-Job
.
Este parâmetro é introduzido no PowerShell 3.0.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Elimina uma tarefa mesmo que o estado da tarefa esteja em Execução. Se o parâmetro Forçar não for especificado, Remove-Job
não elimina tarefas em execução.
Type: | SwitchParameter |
Aliases: | F |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Elimina tarefas em segundo plano com o ID especificado. Pode introduzir uma matriz separada por vírgulas. O ID da tarefa é um número inteiro exclusivo que identifica uma tarefa na sessão atual.
Para localizar o ID de uma tarefa, utilize Get-Job
sem parâmetros.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Elimina tarefas com o InstanceId especificado. Pode introduzir uma matriz separada por vírgulas. Um InstanceId é um GUID exclusivo que identifica uma tarefa.
Para localizar o InstanceId de uma tarefa, utilize Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Especifica as tarefas a eliminar. Introduza uma variável que contenha as tarefas ou um comando que obtenha as tarefas. Pode introduzir uma matriz separada por vírgulas.
Pode enviar objetos de trabalho pelo pipeline para Remove-Job
.
Type: | Job[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Elimina apenas tarefas com o nome amigável especificado. Os carateres universais são permitidos. Pode introduzir uma matriz separada por vírgulas.
Não é garantido que os nomes amigáveis das tarefas sejam exclusivos, mesmo numa sessão do PowerShell. Utilize os parâmetros WhatIf e Confirm quando eliminar ficheiros por nome.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-State
Elimina apenas as tarefas com o estado especificado. Para eliminar tarefas com o estado Em execução, utilize o parâmetro Force .
Valores aceites:
- AtBreakpoint
- Bloqueado
- Concluído
- Desligado
- Com falhas
- NotStarted
- Em Execução
- Parada
- A parar
- Suspenso
- A suspender
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
Mostra o que aconteceria se Remove-Job
fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Pode enviar um objeto de tarefa pelo pipeline para Remove-Job
.
Saídas
None
Remove-Job
não gera nenhuma saída.
Notas
Uma tarefa do PowerShell cria um novo processo. Quando a tarefa for concluída, o processo é encerrado. Quando Remove-Job
é executado, o estado da tarefa é removido.
Se uma tarefa parar antes da conclusão e o processo não tiver sido concluído, o processo será encerrado à força.