Partilhar via


Stop-Job

Para uma tarefa 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 para as tarefas em segundo plano do PowerShell que estão em curso. Pode utilizar este cmdlet para parar todas as tarefas ou parar tarefas selecionadas com base no respetivo nome, ID, ID de instância ou estado ou ao transmitir um objeto de tarefa para Stop-Job.

Pode utilizar Stop-Job para parar tarefas em segundo plano, como as que foram iniciadas com o Start-Job cmdlet ou o parâmetro AsJob de qualquer cmdlet. Quando para uma tarefa em segundo plano, o PowerShell conclui todas as tarefas pendentes nessa fila de tarefas e, em seguida, termina a tarefa. Não são adicionadas novas tarefas à fila depois de este comando ser submetido.

Este cmdlet não elimina tarefas em segundo plano. Para eliminar uma tarefa, utilize o Remove-Job cmdlet .

A partir do Windows PowerShell 3.0, Stop-Job também para os tipos de tarefas personalizados, como WorkflowJobs e instâncias de ScheduledJobs. Para ativar Stop-Job a paragem de uma tarefa com o tipo de tarefa personalizada, importe o módulo que suporta o tipo de tarefa personalizada para a sessão antes de executar um Stop-Job comando, seja utilizando o Import-Module cmdlet ou utilizando ou obtendo um cmdlet no módulo. Para obter informações sobre um determinado tipo de tarefa personalizada, veja a documentação da funcionalidade de tipo de tarefa personalizada.

Exemplos

Exemplo 1: Parar uma tarefa num 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 utilizar o Stop-Job cmdlet para parar uma tarefa em execução num computador remoto.

Uma vez que a tarefa foi iniciada com o Invoke-Command cmdlet para executar um Start-Job comando remotamente, o objeto da tarefa é armazenado no computador remoto. Tem de utilizar outro Invoke-Command comando para executar um Stop-Job comando remotamente. Para obter mais informações sobre tarefas em segundo plano remotas, consulte about_Remote_Jobs.

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

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

O terceiro comando para a tarefa. Utiliza o Invoke-Command cmdlet para executar um Stop-Job comando na PSSession no Server01. Uma vez que os objetos da tarefa estão armazenados no $j, que é uma variável no computador local, o comando utiliza o modificador de âmbito Utilizar para identificar $j como uma variável local. Para obter mais informações sobre a opção Utilizar modificador de âmbito, veja about_Remote_Variables.

Quando o comando for concluído, a tarefa é parada e a PSSession em $s está disponível para utilização.

Exemplo 2: Parar uma tarefa em segundo plano

Stop-Job -Name "Job1"

Este comando para a Job1 tarefa em segundo plano.

Exemplo 3: Parar várias tarefas em segundo plano

Stop-Job -Id 1, 3, 4

Este comando para três tarefas. Identifica-os pelos respetivos IDs.

Exemplo 4: Parar todas as tarefas em segundo plano

Get-Job | Stop-Job

Este comando para todas as tarefas em segundo plano na sessão atual.

Exemplo 5: Parar todas as tarefas em segundo plano bloqueadas

Stop-Job -State Blocked

Este comando para todas as tarefas que estão bloqueadas.

Exemplo 6: Parar uma tarefa 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

Estes comandos mostram como parar uma tarefa com base no instanceID.

O primeiro comando utiliza o Get-Job cmdlet para obter as tarefas na sessão atual. O comando utiliza um operador de pipeline (|) para enviar as tarefas para um Format-Table comando, que apresenta uma tabela das propriedades especificadas de cada tarefa. A tabela inclui o InstanceID de cada tarefa. Utiliza uma propriedade calculada para apresentar o estado da tarefa.

O segundo comando utiliza um Stop-Job comando que tem o parâmetro InstanceID para parar uma tarefa selecionada.

Exemplo 7: Parar uma tarefa num 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 utilizar o Stop-Job cmdlet para parar uma tarefa em execução num computador remoto.

Uma vez que a tarefa foi iniciada com o parâmetro AsJob do Invoke-Command cmdlet, o objeto Job está localizado no computador local, mesmo que a tarefa seja executada no computador remoto. Por conseguinte, pode utilizar um comando local Stop-Job para parar a tarefa.

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

Este comando devolve um objeto de tarefa, que é o mesmo objeto de tarefa que o Start-Job cmdlet devolve. O comando guarda o objeto da tarefa na $j variável .

O segundo comando utiliza um operador de pipeline para enviar a tarefa na $j variável para Stop-Job. O comando utiliza o parâmetro PassThru para direcionar Stop-Job para devolver um objeto de tarefa. A apresentação do objeto de tarefa confirma que o estado da tarefa é Parado.

Para obter mais informações sobre tarefas em segundo plano remotas, consulte about_Remote_Jobs.

Parâmetros

-Confirm

Solicita a 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 hash de condições. Este cmdlet para as tarefas que satisfazem todas as condições. 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 só funciona em tipos de tarefas personalizados, como WorkflowJobs e ScheduledJobs. Não funciona em tarefas padrão em segundo plano, como as criadas com o Start-Job cmdlet . Para obter informações sobre o suporte para este parâmetro, veja o tópico de ajuda do tipo de tarefa.

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 os IDs das tarefas que este cmdlet para. A predefinição é todas as tarefas na sessão atual.

O ID é um número inteiro que identifica exclusivamente a tarefa na sessão atual. É mais fácil memorizar e escrever do que o ID da instância, mas é exclusivo apenas na sessão atual. Pode escrever um ou mais IDs, separados por vírgulas. Para localizar o ID de uma tarefa, escreva Get-Job.

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

-InstanceId

Especifica os IDs de instância das tarefas que este cmdlet para. A predefinição é todas as tarefas.

Um ID de instância é um GUID que identifica exclusivamente a tarefa no computador. Para localizar o ID de instância de uma tarefa, utilize Get-Job.

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

-Job

Especifica as tarefas que este cmdlet para. Introduza uma variável que contenha as tarefas ou um comando que obtenha as tarefas. Também pode utilizar um operador de pipeline para submeter tarefas para o Stop-Job cmdlet . Por predefinição, Stop-Job elimina todas as tarefas iniciadas 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 das tarefas que este cmdlet para. Introduza os nomes dos trabalhos numa lista separada por vírgulas ou utilize carateres universais (*) para introduzir um padrão de nome de tarefa. Por predefinição, Stop-Job para todas as tarefas criadas na sessão atual.

Uma vez que o nome amigável não é garantido como exclusivo, utilize os parâmetros WhatIf e Confirm ao parar tarefas por nome.

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

-PassThru

Devolve um objeto que representa o item com o qual está a trabalhar. Por predefinição, este cmdlet não gera quaisquer dados.

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

-State

Especifica um estado de tarefa. Este cmdlet interrompe apenas as tarefas 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, veja 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

Apresenta o que aconteceria mediante a execução do cmdlet. 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

Pode encaminhar um objeto de tarefa para este cmdlet.

Saídas

None

Por predefinição, este cmdlet não devolve nenhuma saída.

System.Management.Automation.PSRemotingJob

Quando utiliza o parâmetro PassThru , este cmdlet devolve um objeto de tarefa.

Notas

O PowerShell inclui os seguintes aliases para Stop-Job:

  • Todas as plataformas:
    • spjb