Compartilhar via


Stop-Job

Interrompe um trabalho em segundo plano do PowerShell.

Sintaxe

SessionIdParameterSet (Default)

Stop-Job
    [-Id] <Int32[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Stop-Job
    [-Name] <String[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Stop-Job
    [-InstanceId] <Guid[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Stop-Job
    [-State] <JobState>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Stop-Job
    [-Filter] <Hashtable>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

O cmdlet Stop-Job interrompe os trabalhos em segundo plano do PowerShell que estão em andamento. Você pode usar esse cmdlet para interromper todos os trabalhos ou parar 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 cmdlet Start-Job 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 trabalho e termina o trabalho. Nenhuma nova tarefa é adicionada à fila depois que esse comando é enviado.

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

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 interromper 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 comando Stop-Job, usando o cmdlet Import-Module ou usando ou obtendo um cmdlet no módulo. Para obter informações sobre um tipo de trabalho personalizado específico, 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 cmdlet Stop-Job para interromper um trabalho em execução em um computador remoto.

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

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

O segundo comando usa o cmdlet Invoke-Command para executar um comando Start-Job 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 variável $j.

O terceiro comando interrompe o trabalho. Ele usa o cmdlet Invoke-Command para executar um comando Stop-Job 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 de escopo Using: para identificar $j como uma variável local. Para obter mais informações sobre o modificador de escopo, consulte about_Remote_VariablesUsing:.

Quando o comando for concluído, o trabalho será interrompido e o de PSSession no $s estará disponível para uso.

Exemplo 2: Parar um trabalho em segundo plano

Stop-Job -Name "Job1"

Esse comando interrompe o trabalho Job1 em 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 suas IDs de .

Exemplo 4: Parar todos os trabalhos em segundo plano

Get-Job | Stop-Job

Esse comando interrompe todos os trabalhos em 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 bloqueados.

Exemplo 6: Parar um trabalho por ID da 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 cmdlet Get-Job para obter os trabalhos na sessão atual. O comando usa um operador de pipeline (|) para enviar os trabalhos para um comando Format-Table, 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 comando Stop-Job 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 cmdlet Stop-Job para interromper um trabalho em execução em um computador remoto.

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

O primeiro comando usa o cmdlet Invoke-Command 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 cmdlet Start-Job retorna. O comando salva o objeto de trabalho na variável $j.

O segundo comando usa um operador de pipeline para enviar o trabalho na variável $j 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 está parado.

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

Parâmetros

-Confirm

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:cf

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Filter

Especifica uma tabela hash de condições. Esse cmdlet interrompe trabalhos que atendem a 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 apenas 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 cmdlet Start-Job. Para obter informações sobre o suporte para esse parâmetro, consulte o tópico de ajuda para o tipo de trabalho.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades do parâmetro

Tipo:Hashtable
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

FilterParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-Id

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

A ID é um número inteiro que identifica exclusivamente o trabalho na sessão atual. É mais fácil lembrar e digitar do que a ID da instância, mas ela é exclusiva apenas na sessão atual. Você pode digitar uma ou mais IDs, separadas por vírgulas. Para localizar a ID de um trabalho, digite Get-Job.

Propriedades do parâmetro

Tipo:

Int32[]

Valor padrão:All jobs
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

SessionIdParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-InstanceId

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

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

Propriedades do parâmetro

Tipo:

Guid[]

Valor padrão:All jobs
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

InstanceIdParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-Job

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

Propriedades do parâmetro

Tipo:

Job[]

Valor padrão:All jobs
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

JobParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-Name

Especifica nomes amigáveis de trabalhos que esse cmdlet interrompe. Insira os nomes de trabalho 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 não há garantia de que o nome amigável seja exclusivo, use os parâmetros WhatIf e Confirme ao parar trabalhos por nome.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:All jobs
Dá suporte a curingas:True
DontShow:False

Conjuntos de parâmetros

NameParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-PassThru

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-State

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

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

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

Propriedades do parâmetro

Tipo:JobState
Valor padrão:All jobs
Valores aceitos:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

StateParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:wi

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

System.Management.Automation.RemotingJob

Você pode canalizar um objeto de trabalho para este 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 Windows PowerShell inclui os seguintes aliases para Stop-Job:

  • spjb