Partilhar via


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

Job

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.