Compartilhar via


Trabalhos em segundo plano

os cmdlets podem executar suas ações internamente ou como um Windows PowerShell trabalho em segundo plano. Quando um cmdlet é executado como um trabalho em segundo plano, o trabalho é feito de forma assíncrona em seu próprio thread separado do thread de pipeline que o cmdlet está usando. Da perspectiva do usuário, quando um cmdlet é executado como um trabalho em segundo plano, o prompt de comando retorna imediatamente, mesmo se o trabalho demorar um longo período de tempo para ser concluído, e o usuário poderá continuar sem interrupções enquanto o trabalho for executado.

Trabalhos em segundo plano, trabalhos filho e o repositório de trabalhos

O objeto de trabalho que é retornado pelos cmdlets que oferecem suporte a trabalhos em segundo plano define o trabalho. (O cmdlet Start-Job também retorna um objeto de trabalho.) O nome do trabalho, um identificador que é usado para especificar o trabalho, as informações de estado e os trabalhos filho são incluídos nessa definição. O trabalho não executa nenhum trabalho. Cada trabalho em segundo plano tem pelo menos um trabalho filho porque o trabalho filho executa o trabalho real. Quando você executa um cmdlet para que o trabalho seja executado como um trabalho em segundo plano, o cmdlet deve adicionar o trabalho e os trabalhos filho a um repositório comum, chamado de repositório de trabalhos.

Para obter mais informações sobre como os trabalhos em segundo plano são tratados na linha de comando, consulte o seguinte:

Escrevendo um cmdlet que é executado como um trabalho em segundo plano

Para gravar um cmdlet que pode ser executado como um trabalho em segundo plano, você deve concluir as seguintes tarefas:

  • Defina um asJob parâmetro de opção para que o usuário possa decidir se deseja executar o cmdlet como um trabalho em segundo plano.

  • Crie um objeto derivado da classe System. Management. Automation. Job . esse objeto pode ser um objeto de trabalho personalizado ou um objeto de trabalho fornecido pelo Windows PowerShell, como um objeto System. Management. Automation. Pseventjob .

  • Em um método de processamento de registros, adicione uma if instrução que detecta se o cmdlet deve ser executado como um trabalho em segundo plano.

  • Para objetos de trabalho personalizados, implemente a classe Job.

  • Retorne os objetos apropriados, dependendo se o cmdlet é executado como um trabalho em segundo plano.

Para obter um exemplo de código, consulte como dar suporte a trabalhos.

as APIs a seguir são fornecidas pelo Windows PowerShell para gerenciar trabalhos em segundo plano.

System. Management. Automation. Job deriva objetos de trabalho personalizados. Esta é uma classe abstrata.

System. Management. Automation. Jobrepository gerencia e fornece informações sobre os trabalhos em segundo plano ativos atuais.

System. Management. Automation. JobState define o estado do trabalho em segundo plano. Os Estados incluem iniciado, em execução e parados.

System. Management. Automation. JobStateInfo fornece informações sobre o estado de um trabalho em segundo plano e, se a última alteração de estado foi causada por um erro, o motivo pelo qual o trabalho entrou em seu estado atual.

System. Management. Automation. Jobstateeventargs fornece os argumentos para um evento que é gerado quando um trabalho em segundo plano muda de estado.

Windows PowerShell Cmdlets de trabalho

os cmdlets a seguir são fornecidos pelo Windows PowerShell para gerenciar trabalhos em segundo plano.

Get-Job

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

Receive-Job

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

Remove-Job

Exclui um trabalho em plano de fundo do Windows PowerShell.

Start-Job

Inicia um trabalho em segundo plano do Windows PowerShell.

Stop-Job

Interrompe um trabalho em plano de fundo do Windows PowerShell.

Wait-Job

Suprime o prompt de comando até que um ou todos os trabalhos em segundo plano do Windows PowerShell executados na sessão sejam concluídos.

Consulte Também

Escrevendo um Cmdlet do Windows PowerShell