Obtém trabalhos em segundo plano do Windows PowerShell que estão em execução na sessão atual.

Sintaxe

Get-Job [-Command <string[]>] [<CommonParameters>]

Get-Job [[-InstanceId] <Guid[]>] [<CommonParameters>]

Get-Job [[-Name] <string[]>] [<CommonParameters>]

Get-Job [[-Id] <Int32[]>] [<CommonParameters>]

Get-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [<CommonParameters>]

Descrição

O cmdlet Get-Job obtém objetos que representam os trabalhos em segundo plano que foram iniciados na sessão atual. Você pode usar Get-Job para obter trabalhos que foram iniciados com o uso de Start-Job ou com o uso do parâmetro AsJob de qualquer cmdlet.

Sem parâmetros, um comando "Get-Job" obtém todos os trabalhos na sessão atual. Você pode usar os parâmetros de Get-Job para obter trabalhos específicos.

O objeto de trabalho que Get-Job retorna contém informações úteis sobre o trabalho, mas não contém os resultados do trabalho. Para obter os resultados, use o cmdlet Receive-Job.

Um trabalho em segundo plano do Windows PowerShell é um comando executado "em segundo plano" sem interagir com a sessão atual. Normalmente, usa-se um trabalho em segundo plano para executar um comando complexo que leva muito tempo para ser concluído. Para obter mais informações sobre trabalhos em segundo plano no Windows PowerShell, consulte about_Jobs.

Parâmetros

-Command <string[]>

Obtém os trabalhos que incluem o comando especificado. O padrão são todos os trabalhos. Insira um comando (como uma cadeia de caracteres). Você pode usar curingas para especificar um padrão de comando.

Necessário?

false

Posição?

named

Valor padrão

All jobs

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

true

-Id <Int32[]>

Obtém somente trabalhos com as IDs especificadas.

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 ela é 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?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-InstanceId <Guid[]>

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

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

Necessário?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

true

-Name <string[]>

Obtém o trabalho com os nomes amigáveis especificados. Insira um nome de trabalho ou use caracteres curinga para inserir um padrão de nome de trabalho. Por padrão, Get-Job obtém todos os trabalhos na sessão atual.

Necessário?

false

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

true

-State <JobState>

Obtém apenas os trabalhos no estado especificado. Os valores válidos são NotStarted, Running, Completed, Stopped, Failed e Blocked. Por padrão, Get-Job obtém todos os trabalhos na sessão atual.

Necessário?

false

Posição?

named

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

None

Você não pode canalizar a entrada para este cmdlet.

Saídas

System.Management.Automation.RemotingJob

Get-Job retorna objetos que representam os trabalhos na sessão.

Exemplo 1

C:\PS>get-job

Descrição
-----------
Esse comando obtém todos os trabalhos em segundo plano iniciados na sessão atual. Não inclui trabalhos criados em outras sessões, mesmo se os trabalhos forem executados no computador local.






Exemplo 2

C:\PS>$j = get-job -name Job1

C:\PS> $ID = $j.InstanceID

C:\PS> $ID

Guid
----
03c3232e-1d23-453b-a6f4-ed73c9e29d55

C:\PS> stop-job -instanceid $ID

Descrição
-----------
Esses comandos mostram como obter a ID de instância de um trabalho e usá-la para parar um trabalho. Ao contrário do que ocorre com o nome de um trabalho, que não é exclusivo, a ID de instância é exclusiva.

O primeiro comando utiliza o cmdlet Get-Job para obter um trabalho. Ele usa o parâmetro Name para identificar o trabalho. O comando armazena o objeto de trabalho que Get-Job retorna na variável $j. Nesse exemplo, há somente um trabalho com o nome especificado.

O segundo comando obtém a propriedade InstanceId do objeto na variável $j e a armazena na variável $ID. 

O terceiro comando exibe o valor da variável $ID.

O quarto comando utiliza o cmdlet Stop-Job para parar o trabalho. Ele usa o parâmetro InstanceId para identificar o trabalho e a variável $ID para representar a ID de instância do trabalho.






Exemplo 3

C:\PS>get-job -command "*get-process*"

Descrição
-----------
Esse comando obtém os trabalhos no sistema que incluem um comando Get-Process. O comando usa o parâmetro Command de Get-Job para limitar os trabalhos recuperados. O comando usa caracteres curinga (*) para obter trabalhos que incluem um comando Get-Process em qualquer lugar da cadeia de caracteres de comando.






Exemplo 4

C:\PS>"*get-process*" | get-job

Descrição
-----------
Como o comando no exemplo anterior, esse comando obtém os trabalhos no sistema que incluem um comando Get-Process. O comando usa um operador de pipeline (|) para enviar uma cadeia de caracteres (entre aspas duplas) para o cmdlet Get-Job. Equivale ao comando anterior.






Exemplo 5

C:\PS>get-job -state NotStarted

Descrição
-----------
Esse comando obtém apenas os trabalhos que foram criados, mas que ainda não foram iniciados. Isso inclui trabalhos que estão agendados para execução no futuro e os que ainda não estão agendados.






Exemplo 6

C:\PS>get-job -name job*

Descrição
-----------
Esse comando obtém todos os trabalhos que têm nomes de trabalho começando com "job". Como "job<número>" é o nome padrão de um trabalho, esse comando obtém todos os trabalhos que não têm um nome explicitamente atribuído.






Exemplo 7

C:\PS>start-job -scriptblock {get-process} -name MyJob

C:\PS> $j = get-job -name MyJob

C:\PS> $j

Id       Name      State      HasMoreData     Location    Command
--       ----      -----      -----------     --------    -------
1        myjob     Completed  True            localhost   get-process

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

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    124       4    13572      12080    59            1140 audiodg
    783      16    11428      13636   100             548 CcmExec
     96       4     4252       3764    59            3856 ccmsetup
...

Descrição
-----------
Esse exemplo mostra como usar Get-Job para obter um objeto de trabalho e, em seguida, mostra como usar o objeto de trabalho para representar o trabalho em um comando.

O primeiro comando usa o cmdlet Start-Job para iniciar um trabalho em segundo plano que executa um comando Get-Process no computador local. O comando usa o parâmetro Name de Start-Job para atribuir um nome amigável ao trabalho.

O segundo comando utiliza Get-Job para obter o trabalho. Ele usa o parâmetro Name de Get-Job de modo a identificar o trabalho. O comando salva o objeto de trabalho resultante na variável $j.

O terceiro comando exibe o valor do objeto de trabalho na variável $j. O valor da propriedade State mostra que o trabalho está concluído. O valor da propriedade HasMoreData mostra que existem resultados disponíveis do trabalho que ainda não foram recuperados.

O quarto comando utiliza o cmdlet Receive-Job para obter os resultados do trabalho. Ele usa o objeto de trabalho na variável $j para representar o trabalho. Você também pode usar um operador de pipeline para enviar um objeto de trabalho para Receive-Job.






Exemplo 8

C:\PS>start-job -scriptblock {get-eventlog system}

C:\PS> invoke-command -computername S1 -scriptblock {get-eventlog system} -AsJob

C:\PS> invoke-command -computername S2 -scriptblock {start-job -scriptblock {get-eventlog system}}

C:\PS> get-job

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
1     Job1     Running    True          localhost  get-eventlog system
2     Job2     Running    True          S1         get-eventlog system

C:\PS> invoke-command -computername S2 -scriptblock {get-job}

Id    Name     State      HasMoreData   Location   Command
--    ----     -----      -----------   --------   -------
4     Job4     Running    True          localhost  get-eventlog system

Descrição
-----------
Esse exemplo demonstra que o cmdlet Get-Job pode obter todos os trabalhos que foram iniciados na sessão atual, mesmo que eles tenham sido iniciados com o uso de métodos diferentes.

O primeiro comando usa o cmdlet Start-Job para iniciar um trabalho no computador local.

O segundo comando usa o parâmetro AsJob de Invoke-Command para iniciar um trabalho no computador S1. Embora os comandos no trabalho sejam executados no computador remoto, o objeto de trabalho é criado no computador local, de modo que você usará comandos locais para gerenciar o trabalho.

O terceiro comando usa o cmdlet Invoke-Command para executar um comando Start-Job no computador S2. Com esse método, o objeto de trabalho é criado no computador remoto, de modo que você usará comandos remotos para gerenciar o trabalho.

O quarto comando usa Get-Job para obter os trabalhos armazenados no computador local.

O quinto comando usa Invoke-Command para executar um comando Get-Job no computador S2.

A saída de exemplo mostra os resultados dos comandos Get-Job.

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






Exemplo 9

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

Id       Name            State      HasMoreData     Location             Command
--       ----            -----      -----------     --------             -------
1        Job1            Failed     False           localhost            get-process

C:\PS> (get-job).jobstateinfo | format-list -property *

State  : Failed
Reason :


C:\PS> get-job | format-list *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : fb792295-1318-4f5d-8ac8-8a89c5261507
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :


C:\PS> (get-job -name job2).jobstateinfo.reason
Connecting to remote server using WSManCreateShellEx api failed. The async callback gave the following error message :
Access is denied.

Descrição
-----------
Esse comando mostra como usar o objeto de trabalho que Get-Job retorna para investigar por que um trabalho falhou. Ele também mostra como obter os trabalhos filhos de cada trabalho.

O primeiro comando usa o cmdlet Start-Job para iniciar um trabalho no computador local. O objeto de trabalho que Start-Job retorna mostra que o trabalho falhou. O valor da propriedade State é "Falha".

O segundo comando utiliza Get-Job para obter o objeto de trabalho. O comando usa o método de ponto para obter o valor da propriedade JobStateInfo do objeto. Ele usa um operador de pipeline para enviar o objeto na propriedade JobStateInfo para o cmdlet Format-List, que formata todas as propriedades do objeto (*) em uma lista.

O resultado do comando Format-List mostra que o valor da propriedade Reason do trabalho está vazio.

O terceiro comando investiga mais além. Ele usa um comando Get-Job para obter o trabalho e usa um operador de pipeline para enviar o objeto de trabalho inteiro para o cmdlet Format-List, que exibe todas as propriedades do trabalho em uma lista.

A exibição de todas as propriedades no objeto de trabalho mostra que o trabalho contém um trabalho filho denominado "Job2".

O quarto comando usa Get-Job para obter o objeto de trabalho que representa o trabalho filho Job2. Esse é o trabalho no qual o comando foi, de fato, executado. Ele usa o método de ponto para obter a propriedade Reason da propriedade JobStateInfo.

O resultado mostra que o trabalho falhou por causa de um erro de "acesso negado". Nesse caso, o usuário esqueceu de usar a opção "Executar como administrador" ao abrir o Windows PowerShell. 

Como trabalhos em segundo plano usam os recursos de comunicação remota do Windows PowerShell, a comunicação remota deve ser configurada no computador para a execução de um trabalho, mesmo quando o trabalho for executado no computador local.

Para obter informações sobre requisitos de comunicação remota no Windows PowerShell, consulte about_Remote_Requirements. Para obter dicas de solução de problemas, consulte about_Remote_Troubleshooting.






See Also




Sumário