Share via


Stop-Job

Interrompe um trabalho em segundo plano do PowerShell.

Syntax

Stop-Job
    [-PassThru]
    [-Id] <Int32[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Name] <String[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-InstanceId] <Guid[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-State] <JobState>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Filter] <Hashtable>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

O Stop-Job cmdlet interrompe os trabalhos em segundo plano do PowerShell que estão em andamento. Você pode usar esse cmdlet para interromper todos os trabalhos ou interromper os trabalhos selecionados com base em seu nome, ID, ID da instância ou estado, ou passando um objeto de trabalho para Stop-Job.

Você pode usar Stop-Job para interromper trabalhos em segundo plano, como aqueles que foram iniciados usando o Start-Job cmdlet ou o parâmetro AsJob de qualquer cmdlet. Quando você interrompe um trabalho em segundo plano, o PowerShell conclui todas as tarefas pendentes nessa fila de tarefas e, em seguida, encerra o trabalho. Nenhuma tarefa nova é adicionada à fila depois que esse comando é enviado.

Esse cmdlet não exclui os trabalhos em segundo plano. Para excluir um trabalho, use o Remove-Job cmdlet.

A partir do Windows PowerShell 3.0, Stop-Job também interrompe tipos de trabalho personalizados, como WorkflowJobs e instâncias de ScheduledJobs. Para habilitar Stop-Job a interrupção de um trabalho com tipo de trabalho personalizado, importe o módulo que dá suporte ao tipo de trabalho personalizado para a sessão antes de executar um Stop-Job comando, usando o Import-Module cmdlet ou usando ou obtendo um cmdlet no módulo. Para obter informações sobre um tipo específico de trabalho personalizado, consulte a documentação do recurso de tipo de trabalho personalizado.

Exemplos

Exemplo 1: Parar um trabalho em um computador remoto com Invoke-Command

$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }

Este exemplo mostra como usar o Stop-Job cmdlet para interromper um trabalho em execução em um computador remoto.

Como o trabalho foi iniciado com o Invoke-Command cmdlet para executar um Start-Job comando remotamente, o objeto de trabalho é armazenado no computador remoto. Você deve usar outro Invoke-Command comando para executar um Stop-Job comando remotamente. Para obter mais informações sobre trabalhos remotos em segundo plano, consulte about_Remote_Jobs.

O primeiro comando cria uma sessão do PowerShell (PSSession) no computador Server01 e, em seguida, armazena $s o objeto de sessão na variável. O comando usa as credenciais de um administrador de domínio.

O segundo comando usa o Invoke-Command cmdlet para executar um Start-Job comando na sessão. O comando no trabalho obtém todos os eventos no log de eventos do Sistema. O objeto de trabalho resultante é armazenado na $j variável.

O terceiro comando interrompe o trabalho. Ele usa o Invoke-Command cmdlet para executar um Stop-Job comando no PSSession no Server01. Como os objetos de trabalho são armazenados em $j, que é uma variável no computador local, o comando usa o modificador Usando escopo para identificar $j como uma variável local. Para obter mais informações sobre o Usando modificador de escopo, consulte about_Remote_Variables.

Quando o comando é concluído, o trabalho é interrompido e o PSSession in $s está disponível para uso.

Exemplo 2: Parar um trabalho em segundo plano

Stop-Job -Name "Job1"

Esse comando interrompe o trabalho em Job1 segundo plano.

Exemplo 3: Parar vários trabalhos em segundo plano

Stop-Job -Id 1, 3, 4

Esse comando interrompe três trabalhos. Ele os identifica por seus IDs.

Exemplo 4: Parar todos os trabalhos em segundo plano

Get-Job | Stop-Job

Esse comando interrompe todos os trabalhos de segundo plano na sessão atual.

Exemplo 5: Parar todos os trabalhos em segundo plano bloqueados

Stop-Job -State Blocked

Esse comando interrompe todos os trabalhos que estão bloqueados.

Exemplo 6: Parar um trabalho por ID de instância

Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto

Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf

Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf

Esses comandos mostram como parar um trabalho com base em seu InstanceID.

O primeiro comando usa o Get-Job cmdlet para obter os trabalhos na sessão atual. O comando usa um operador de pipeline (|) para enviar os trabalhos para um Format-Table comando, que exibe uma tabela das propriedades especificadas de cada trabalho. A tabela inclui o InstanceID de cada trabalho. Ele usa uma propriedade calculada para exibir o estado do trabalho.

O segundo comando usa um Stop-Job comando que tem o parâmetro InstanceID para interromper um trabalho selecionado.

Exemplo 7: Parar um trabalho em um computador remoto

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    Get-EventLog -LogName Sy...

Este exemplo mostra como usar o Stop-Job cmdlet para interromper um trabalho em execução em um computador remoto.

Como o trabalho foi iniciado com o parâmetro AsJob do Invoke-Command cmdlet, o objeto Job está localizado no computador local, mesmo que o trabalho seja executado no computador remoto. Portanto, você pode usar um comando local Stop-Job para interromper o trabalho.

O primeiro comando usa o Invoke-Command cmdlet para iniciar um trabalho em segundo plano no computador Server01. O comando usa o parâmetro AsJob para executar o comando remoto como um trabalho em segundo plano.

Esse comando retorna um objeto de trabalho, que é o mesmo objeto de trabalho que o Start-Job cmdlet retorna. O comando salva o objeto de trabalho na $j variável.

O segundo comando usa um operador de pipeline para enviar o $j trabalho na variável para Stop-Job. O comando usa o parâmetro PassThru para direcionar Stop-Job para retornar um objeto de trabalho. A exibição do objeto de trabalho confirma que o estado do trabalho é Parado.

Para obter mais informações sobre trabalhos remotos em segundo plano, consulte about_Remote_Jobs.

Parâmetros

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

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

-Filter

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

Esse parâmetro funciona somente em tipos de trabalho personalizados, como WorkflowJobs e ScheduledJobs. Ele não funciona em trabalhos em segundo plano padrão, como aqueles criados usando o Start-Job cmdlet. Para obter informações sobre o suporte para este parâmetro, consulte o tópico da Ajuda para o tipo de trabalho em questão.

Este parâmetro foi introduzido no Windows PowerShell 3.0.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Id

Especifica as IDs dos trabalhos que esse cmdlet interrompe. O padrão é todos os trabalhos na sessão atual.

O ID é um inteiro que identifica exclusivamente o trabalho na sessão atual. É mais fácil lembrar e digitar do que o ID da instância, mas ele é exclusivo apenas na sessão atual. Você pode digitar um ou mais IDs, separados por vírgulas. Para localizar a ID de um trabalho, digite Get-Job.

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

-InstanceId

Especifica as IDs de instância dos trabalhos que esse cmdlet interrompe. O padrão é obter todos os trabalhos.

Uma ID de instância é um GUID que identifica exclusivamente o trabalho no computador. Para localizar o ID da instância de um trabalho, use Get-Job.

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

-Job

Especifica os trabalhos que esse cmdlet interrompe. Insira uma variável que contenha os trabalhos ou um comando que os obtenha. Você também pode usar um operador de pipeline para enviar trabalhos ao Stop-Job cmdlet. Por padrão, Stop-Job exclui todos os trabalhos que foram iniciados na sessão atual.

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

-Name

Especifica nomes amigáveis de trabalhos que esse cmdlet interrompe. Insira os nomes dos trabalhos em uma lista separada por vírgulas ou use caracteres curinga (*) para inserir um padrão de nome de trabalho. Por padrão, Stop-Job interrompe todos os trabalhos criados na sessão atual.

Como o nome amigável não tem garantia de ser exclusivo, use os parâmetros WhatIf e Confirm ao interromper trabalhos por nome.

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

-PassThru

Retorna um objeto que representa o item com que você está trabalhando. Por padrão, este cmdlet não gera saída.

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

-State

Especifica um estado de trabalho. Esse cmdlet interrompe apenas trabalhos no estado especificado. Os valores aceitáveis para esse parâmetro são:

  • NotStarted
  • Running
  • Completed
  • Failed
  • Stopped
  • Blocked
  • Suspended
  • Disconnected
  • Suspending
  • Stopping

Para obter mais informações sobre estados de trabalho, consulte Enumeração JobState.

Type:JobState
Accepted values:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Default value:All jobs
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Mostra o que aconteceria se o cmdlet 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

System.Management.Automation.RemotingJob

Você pode canalizar um objeto de trabalho para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

System.Management.Automation.PSRemotingJob

Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto de trabalho.

Observações

O PowerShell inclui os seguintes aliases para Stop-Job:

  • Todas as plataformas:
    • spjb