Compartilhar via


Receive-Job

Obtém os resultados dos trabalhos em segundo plano do Windows PowerShell na sessão atual.

Sintaxe

Receive-Job [-Job] <Job[]> [[-ComputerName] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [[-InstanceId] <Guid[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Job] <Job[]> [[-Location] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [[-Name] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Job] <Job[]> [[-Session] <PSSession[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Id] <Int32[]> [-Keep] [-NoRecurse] [<CommonParameters>]

Descrição

O cmdlet Receive-Job obtém os resultados dos trabalhos em segundo plano do Windows PowerShell. Use Receive-Job para obter os resultados de trabalhos iniciados com o cmdlet Start-Job ou o parâmetro AsJob de qualquer cmdlet. Você pode obter os resultados de todos os trabalhos ou identificar trabalhos pelo nome, ID, ID de instância, nome de computador, local ou sessão, ou enviando um objeto de trabalho.

Quando você iniciar um trabalho em segundo plano do Windows PowerShell, o trabalho inicia, mas os resultados não aparecem imediatamente. Em vez disso, o comando retorna um objeto que representa o trabalho em segundo plano. O objeto de trabalho contém informações úteis sobre o trabalho, mas não contém os resultados. Esse método permite que você continue a trabalhar na sessão enquanto o trabalho é executado. Para obter mais informações sobre trabalhos em segundo plano no Windows PowerShell, consulte about_Jobs.

Para obter os resultados do comando, use o cmdlet Receive-Job. Receive-Job obtém os resultados que foram gerados no momento do envio do comando Receive-Job. Se os resultados ainda não estiverem concluídos, você poderá executar comandos Receive-Job adicionais para obter os resultados restantes.

Por padrão, os resultados do trabalho são excluídos do sistema quando você os recebe, mas você pode usar o parâmetro Keep de modo a salvá-los para poder recebê-los novamente. Para excluir os resultados do trabalho, receba-os novamente (sem o parâmetro Keep), feche a sessão ou use o cmdlet Remove-Job para excluir o trabalho da sessão.

Parâmetros

-ComputerName <string[]>

Obtém os resultados do trabalho que foram executados nos computadores especificados. Insira os nomes dos computadores. O padrão são todos os trabalhos da sessão atual.

Esse parâmetro seleciona dentre os resultados do trabalho que estão armazenados no computador local. Ele não obtém dados de computadores remotos. Para obter resultados do trabalho armazenados em computadores remotos, use o cmdlet Invoke-Command para executar o comando Receive-Job remotamente.

Necessário?

false

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-Id <Int32[]>

Obtém os resultados de trabalhos com as IDs especificadas. O padrão são todos os trabalhos da sessão atual.

A ID é um inteiro que identifica com exclusividade o trabalho dentro da sessão atual. É mais fácil de lembrar e digitar do que a ID de instância, mas é exclusiva somente na sessão atual. É possível digitar uma ou mais IDs (separadas por vírgulas). Para localizar a ID de um trabalho, digite "Get-Job" sem parâmetros.

Necessário?

true

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-InstanceId <Guid[]>

Obtém os resultados de trabalhos com as IDs de instância especificadas. O padrão são todos os trabalhos da sessão atual.

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

Necessário?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-Job <Job[]>

Especifica o trabalho para o qual estão sendo recuperados resultados. Esse parâmetro é necessário em um comando Receive-Job. Insira uma variável que contenha o trabalho ou um comando que obtenha o trabalho. Você também pode canalizar um objeto de trabalho para Receive-Job.

Necessário?

true

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByValue, ByPropertyName)

Aceitar caracteres curinga?

false

-Keep

Salva os resultados do trabalho no sistema, mesmo depois que você os recebe. Por padrão, os resultados do trabalho são excluídos quando recuperados.

Para excluir os resultados, use Receive-Job para recebê-los novamente sem o parâmetro Keep, feche a sessão ou use o cmdlet Remove-Job para excluir o trabalho da sessão.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Location <string[]>

Obtém apenas os resultados de trabalhos com um local especificado. O padrão são todos os trabalhos da sessão atual.

Necessário?

false

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-Name <string[]>

Obtém os resultados do trabalho com o nome amigável especificado. O padrão são todos os trabalhos da sessão atual.

Necessário?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-NoRecurse

Obtém resultados somente do trabalho especificado. Por padrão, Receive-Job também obtém os resultados de todos os trabalhos filho do trabalho especificado.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Session <PSSession[]>

Obtém os resultados do trabalho que foram executados na sessão especificada (PSSession) do Windows PowerShell. Insira uma variável que contenha a PSSession ou um comando que obtenha a PSSession, como um comando Get-PSSession. O padrão são todos os trabalhos da sessão atual.

Necessário?

false

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.Management.Automation.Job

É possível canalizar objetos de trabalho para Receive-Job.

Saídas

PSObject

Receive-Job retorna os resultados dos comandos no trabalho.

Exemplo 1

C:\PS>$job = start-job -scriptblock {get-process}

C:\PS> receive-job -job $job

Descrição
-----------
Esses comandos usam o parâmetro Job para obter os resultados de um trabalho específico. O primeiro comando usa o cmdlet Start-Job para iniciar um trabalho que executa um comando "Get-Process". O comando usa o operador de atribuição (=) para salvar o objeto de trabalho resultante na variável $job.

O segundo comando utiliza o cmdlet Receive-Job para obter os resultados do trabalho. Ele usa o parâmetro Job para especificar o trabalho.





Exemplo 2

C:\PS>$job = start-job -scriptblock {get-process}

C:\PS> $job | receive-job

Descrição
-----------
Esse exemplo é igual ao Exemplo 2, a não pelo fato de que o comando usa um operador de pipeline (|) para enviar o objeto de trabalho para Receive-Job. Dessa forma, o comando não precisa de um parâmetro Job para especificar o trabalho.





Exemplo 3

C:\PS>$j = invoke-command -computername Server01, Server02, Server03 -scriptblock {get-service} -AsJob

C:\PS> $j.childjobs

Id   Name     State      HasMoreData   Location       Command
--   ----     -----      -----------   --------       -------
2    Job2     Completed  True          Server01       get-service
3    Job3     Completed  True          Server02       get-service
4    Job4     Completed  True          Server03       get-service

C:\PS> receive-job -name Job3  -keep

Status  Name        DisplayName                        PSComputerName
------  ----------- -----------                        --------------
Running AeLookupSvc Application Experience             Server02
Stopped ALG         Application Layer Gateway Service  Server02
Running Appinfo     Application Information            Server02
Running AppMgmt     Application Management             Server02

Descrição
-----------
Esses comandos usam o parâmetro Name de Receive-Job para obter os resultados de um entre vários trabalhos em segundo plano executados em computadores remotos. 

O primeiro comando usa o cmdlet Invoke-Command para iniciar um trabalho em segundo plano que executa um comando Get-Service em três computadores remotos. O comando usa o parâmetro AsJob para executar o comando como um trabalho em segundo plano. O comando salva o objeto de trabalho resultante na variável $j.

Quando você usa o parâmetro AsJob de Invoke-Command para iniciar um trabalho, o objeto de trabalho é criado no computador local, mesmo que o trabalho seja executado nos computadores remotos. Dessa forma, você usa comandos locais para gerenciar o trabalho.

Além disso, quando você usa AsJob, o Windows PowerShell retorna um objeto de trabalho que contém um trabalho filho para cada trabalho que foi iniciado. Nesse caso, o objeto de trabalho contém três trabalhos filho, um para cada trabalho em cada computador remoto.

O segundo comando usa o método de ponto para exibir o valor da propriedade ChildJobs do objeto de trabalho em $j. O vídeo mostra que o comando criou três trabalhos filho, um para o trabalho em cada computador remoto.
 
O terceiro comando usa o cmdlet Receive-Job para obter os resultados do trabalho filho Job3 que foi executado no computador Server02. Ele usa o parâmetro Name para especificar o nome do trabalho filho e o parâmetro Keep para salvar os resultados do trabalho, mesmo depois de eles serem recebidos.





Exemplo 4

C:\PS>$s = new-pssession -computername Server01, Server02, Server03

C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog -logname system}}

C:\PS> $j

Id   Name     State      HasMoreData   Location   Command
--   ----     -----      -----------   --------   -------
1    Job1     Completed  True          Localhost  get-eventlog system
2    Job2     Completed  True          Localhost  get-eventlog system
3    Job3     Completed  True          Localhost  get-eventlog system

C:\PS> $results = invoke-command -session $s -scriptblock {param($j) receive-job -job $j} -ArgumentList $j

Descrição
-----------
Este exemplo mostra como obter os resultados de trabalhos em segundo plano executados em três computadores remotos.

O primeiro comando usa o cmdlet New-PSSession para criar três PSSessions, um em cada um dos servidores especificados no comando. Ele salva as PSSessions na variável $s.

O segundo comando usa o cmdlet Invoke-Command para executar um comando Start-Job em cada uma das PSSessions na variável $s. O trabalho executa um comando Get-Eventlog que obtém os eventos no log do sistema. O comando salva os resultados na variável $j.

Como o comando usou Invoke-Command para executar o comando Start-Job, o comando na verdade iniciou três trabalhos independentes em cada um dos três computadores. Desse modo, o comando retornou três objetos de trabalho que representam três trabalhos executados localmente em três computadores diferentes.

O terceiro comando exibe os três objetos de trabalho em $j.  

O quarto comando usa Invoke-Command para executar um comando Receive-Job em cada uma das PSSessions em $s e salvar os resultados na variável $results.

Como $j é uma variável local, o bloco de scripts usa a palavra-chave "param" para declarar as variáveis no comando e o parâmetro ArgumentList para fornecer o valor de $j.





Consulte também

Conceitos

about_Jobs
about_Job_Details
about_Remote_Jobs
Start-Job
Get-Job
Wait-Job
Stop-Job
Remove-Job
Invoke-Command