Compartilhar via


Remove-Job

Exclui um trabalho em segundo plano do PowerShell.

Syntax

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

Description

O Remove-Job cmdlet exclui trabalhos em segundo plano do PowerShell que foram iniciados pelo Start-Job cmdlet ou por cmdlets como Invoke-Command os que oferecem suporte ao parâmetro AsJob .

Você pode usar Remove-Job para excluir todos os trabalhos ou excluir trabalhos selecionados. Os trabalhos são identificados por seu Nome, ID, ID da Instância, Comando ou Estado. Ou, um objeto de trabalho pode ser enviado pelo pipeline para Remove-Jobo . Sem parâmetros ou valores de parâmetros, Remove-Job não tem efeito.

Desde o PowerShell 3.0, Remove-Job pode excluir tipos de trabalho personalizados, como trabalhos agendados e trabalhos de fluxo de trabalho. Por exemplo, Remove-Job exclui o trabalho agendado, todas as instâncias do trabalho agendado no disco e os resultados de todas as instâncias de trabalho disparadas.

Se você tentar excluir um trabalho em execução, Remove-Job falhará. Use o Stop-Job cmdlet para interromper um trabalho em execução. Ou, use Remove-Job com o parâmetro Force para excluir um trabalho em execução.

Os trabalhos permanecem no cache de trabalho global até que você exclua o trabalho em segundo plano ou feche a sessão do PowerShell.

Exemplos

Exemplo 1: Excluir um trabalho usando seu nome

Este exemplo usa uma variável e o pipeline para excluir um trabalho por nome.

$batch = Get-Job -Name BatchJob
$batch | Remove-Job

Get-Job usa o parâmetro Name para especificar o trabalho, BatchJob. O objeto de trabalho é armazenado na $batch variável. O objeto em $batch é enviado pelo pipeline para Remove-Job.

Uma alternativa é usar o parâmetro Job , como Remove-Job -Job $batch.

Exemplo 2: Excluir todos os trabalhos em uma sessão

Neste exemplo, todos os trabalhos na sessão atual do PowerShell são excluídos.

Get-job | Remove-Job

Get-Job obtém todos os trabalhos na sessão atual do PowerShell. Os objetos de trabalho são enviados pelo pipeline para Remove-Job.

Exemplo 3: Excluir trabalhos NotStarted

Este exemplo exclui todos os trabalhos da sessão atual do PowerShell que não foram iniciados.

Remove-Job -State NotStarted

Remove-Job usa o parâmetro State para especificar o status do trabalho.

Exemplo 4: Excluir trabalhos usando um nome amigável

Este exemplo exclui todos os trabalhos da sessão atual com nomes amigáveis que terminam com lote*, incluindo trabalhos em execução.

Remove-Job -Name *batch -Force

Remove-Job usa o parâmetro Name para especificar um padrão de nome de trabalho. O padrão inclui o curinga asterisco (*) para localizar todos os nomes de trabalho que terminam com lote. O parâmetro Force exclui trabalhos em execução.

Exemplo 5: Excluir um trabalho que foi criado por Invoke-Command

Este exemplo remove um trabalho que foi iniciado em um computador remoto usando Invoke-Command com o parâmetro AsJob .

Como o exemplo usa o parâmetro AsJob , o objeto de trabalho é criado no computador local. Mas, o trabalho é executado em um computador remoto. Como resultado, você deve usar comandos locais para gerenciar o trabalho.

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-Command executa um trabalho no computador Server01 . O parâmetro AsJob executa o ScriptBlock como um trabalho em segundo plano. O objeto de trabalho é armazenado na $job variável. O $job objeto variável é enviado pelo pipeline para Remove-Job.

Exemplo 6: Excluir um trabalho que foi criado por Invoke-Command e Start-Job

Este exemplo mostra como remover um trabalho em um computador remoto que foi iniciado usando Invoke-Command para executar Start-Jobo . O objeto de trabalho é criado no computador remoto e comandos remotos são usados para gerenciar o trabalho. Uma conexão persistente é necessária 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 um PSSession, uma conexão persistente, para o computador Server01 . A conexão é salva na $S variável.

Invoke-Command conecta-se à sessão salva no $S. O ScriptBlock usa Start-Job para iniciar um trabalho remoto. O trabalho executa um Get-Process comando e usa o parâmetro Name para especificar um nome de trabalho amigável, MyJob.

Invoke-Commandusa a sessão e executa Remove-Jobo $S . O parâmetro Name especifica que o trabalho chamado MyJob é excluído.

Exemplo 7: Excluir um trabalho usando seu InstanceId

Este exemplo remove um trabalho com base em seu 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 um trabalho em segundo plano e o objeto Job é salvo na $job variável.

O objeto em $job é enviado pelo pipeline para Format-List. O parâmetro Property usa um asterisco (*) para especificar que todas as propriedades do objeto sejam exibidas em uma lista.

Remove-Job usa o parâmetro InstanceId para especificar o trabalho a ser excluído.

Parâmetros

-Command

Exclui os trabalhos que incluem as palavras especificadas no comando. Você pode inserir uma matriz separada por vírgula.

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

-Confirm

Solicita a 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

Exclui trabalhos que satisfazem todas as condições estabelecidas na tabela de hash associada. Insira uma tabela de hash na qual as chaves são propriedades do trabalho e os valores são valores de propriedade do trabalho.

Este parâmetro funciona somente em tipos de trabalho personalizados, como os de fluxo de trabalho e os trabalhos agendados. Ele não funciona em trabalhos em segundo plano padrão, como aqueles criados usando 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

Exclui um trabalho mesmo se o estado do trabalho for Em execução. Se o parâmetro Force não for especificado, Remove-Job não excluirá trabalhos em execução.

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

-Id

Exclui trabalhos em segundo plano com a ID especificada. Você pode inserir uma matriz separada por vírgula. O ID do trabalho é um inteiro exclusivo que identifica um trabalho dentro da sessão atual.

Para localizar o ID de um trabalho, use Get-Job sem parâmetros.

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

-InstanceId

Exclui trabalhos com o InstanceId especificado. Você pode inserir uma matriz separada por vírgula. Um InstanceId é um GUID exclusivo que identifica um trabalho.

Para localizar o InstanceId de um trabalho, use Get-Job.

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

-Job

Especifica os trabalhos a serem excluídos. Insira uma variável que contenha os trabalhos ou um comando que os obtenha. Você pode inserir uma matriz separada por vírgula.

Você pode enviar objetos de trabalho pelo pipeline para Remove-Jobo .

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

-Name

Exclui apenas trabalhos com o nome amigável especificado. Caracteres curinga são permitidos. Você pode inserir uma matriz separada por vírgula.

Não é garantido que nomes amigáveis para trabalhos sejam exclusivos, mesmo dentro de uma sessão do PowerShell. Use os parâmetros WhatIf e Confirm ao excluir arquivos por nome.

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

-State

Exclui somente trabalhos com o estado especificado. Para excluir trabalhos com um estado de Execução, use o parâmetro Force.

Valores aceitos:

  • AtBreakpoint
  • Bloqueado
  • Concluído(a)
  • Desconectado
  • Com falha
  • NotStarted
  • Executando
  • Parado
  • Parando
  • Suspenso
  • Suspensão
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

Você pode canalizar um objeto Job para esse cmdlet.

Saídas

None

Esse cmdlet não retorna nenhuma saída.

Observações

O PowerShell inclui os seguintes aliases para Remove-Job:

  • Todas as plataformas:
    • rjb

Um trabalho do PowerShell cria um novo processo. Quando o trabalho é concluído, o processo é encerrado. Quando Remove-Job é executado, o estado do trabalho é removido.

Se um trabalho parar antes da conclusão e seu processo não tiver sido encerrado, o processo será encerrado à força.