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.
See Also