about_Scheduled_Jobs

Breve descrição

Descreve trabalhos agendados e explica como usar e gerenciar trabalhos agendados no PowerShell e no Agendador de Tarefas.

Descrição longa

Os trabalhos agendados do PowerShell são um híbrido útil de trabalhos em segundo plano do PowerShell e tarefas do Agendador de Tarefas.

Como os trabalhos em segundo plano do PowerShell, os trabalhos agendados são executados de forma assíncrona em segundo plano. As instâncias de trabalhos agendados executados podem ser gerenciadas usando os cmdlets de trabalho, como Start-Job, Get-Job, Stop-Jobe Receive-Job.

Como as tarefas do Agendador de Tarefas, os trabalhos agendados são salvos no disco. Você pode exibir e gerenciar os trabalhos no Agendador de Tarefas, habilitá-los e desabilitá-los conforme necessário, executá-los ou usá-los como modelos, estabelecer agendas únicas ou recorrentes para iniciar os trabalhos ou definir condições sob as quais os trabalhos são iniciados.

Além disso, os resultados das instâncias de trabalho agendadas são salvos em disco em um formato facilmente acessível, fornecendo um log em execução da saída do trabalho. Os trabalhos agendados vêm com um conjunto personalizado de cmdlets para gerenciá-los. Os cmdlets permitem criar, editar, gerenciar, desabilitar e reativar trabalhos agendados, gatilhos de trabalho e opções de trabalho.

Esse conjunto abrangente e flexível de ferramentas torna os trabalhos agendados um componente essencial de muitas soluções profissionais de TI do PowerShell.

Os cmdlets de trabalho agendado estão incluídos no módulo PSScheduledJob instalado com o PowerShell. Este módulo foi introduzido no PowerShell 3.0 e funciona no PowerShell 3.0 e em versões posteriores do PowerShell. Para obter mais informações sobre os cmdlets contidos no módulo PSScheduledJob , consulte PSScheduledJob.

Para obter mais informações sobre trabalhos em segundo plano do PowerShell, consulte about_Jobs.

Para obter mais informações sobre o Agendador de Tarefas, consulte Agendador de Tarefas.

Nota

Você pode exibir e gerenciar trabalhos agendados do PowerShell no Agendador de Tarefas. Os trabalhos do PowerShell e os cmdlets de trabalho agendado funcionam somente em trabalhos agendados criados no PowerShell.

Início rápido

Este exemplo cria um trabalho agendado que começa todos os dias às 3h00 e executa o Get-Process cmdlet. O trabalho é iniciado mesmo se o computador estiver funcionando com baterias.

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

O Get-ScheduledJob cmdlet obtém os trabalhos agendados no computador local.

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTrigger obtém os gatilhos de trabalho de ProcessJob. Os parâmetros de entrada especificam o trabalho agendado, não o gatilho, porque os gatilhos são salvos em um trabalho agendado.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

Este exemplo usa o parâmetro ContinueIfGoingOnBattery do Set-ScheduledJob cmdlet para alterar a propriedade StopIfGoingOnBatteries de ProcessJob para False.

Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries     : True
StopIfGoingOnBatteries : False
WakeToRun              : True
StartIfNotIdle         : True
StopIfGoingOffIdle     : False
RestartOnIdleResume    : False
IdleDuration           : 00:10:00
IdleTimeout            : 01:00:00
ShowInTaskScheduler    : True
RunElevated            : False
RunWithoutNetwork      : True
DoNotAllowDemandStart  : False
MultipleInstancePolicy : IgnoreNew
JobDefinition          : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

O Get-ScheduledJob cmdlet obtém o trabalho agendado ProcessJob.

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

O Get-Job cmdlet obtém todas as instâncias do trabalho agendado ProcessJobque foram executadas até agora. O Get-Job cmdlet obtém trabalhos agendados somente quando o módulo PSScheduledJob é importado para a sessão atual.

Gorjeta

Observe que você usa os cmdlets de trabalho agendado para gerenciar trabalhos agendados, mas usa os cmdlets de trabalho para gerenciar instâncias de trabalhos agendados.

Get-Job -Name ProcessJob
Id     Name        PSJobTypeName  State    HasMoreData   Location   Command
--     ----        ------------   -----    -----------   --------   -------
45     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
46     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
47     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
48     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
49     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
50     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
51     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process

O Receive-Job cmdlet obtém os resultados da instância mais recente do trabalho agendado ProcessJob (ID = 51).

Receive-Job -ID 51

Mesmo que o Receive-Job comando não tenha incluído o parâmetro Keep , os resultados do trabalho são salvos no disco até que você os exclua ou o número máximo de resultados seja excedido.

Os resultados do trabalho não estão mais disponíveis nesta sessão, mas se você iniciar uma nova sessão ou abrir uma nova janela do PowerShell, os resultados do trabalho estarão disponíveis novamente.

O comando a seguir usa o parâmetro DefinitionName do Start-Job cmdlet para iniciar o trabalho agendado ProcessJob.

Os trabalhos iniciados usando o Start-Job cmdlet são trabalhos em segundo plano padrão do PowerShell, não instâncias do trabalho agendado. Como todos os trabalhos em segundo plano, esses trabalhos começam imediatamente, não estão sujeitos a opções de trabalho ou são afetados por gatilhos de trabalho e sua saída não é salva no diretório de saída do diretório de trabalho agendado.

Start-Job -DefinitionName ProcessJob

O Unregister-ScheduledJob cmdlet exclui o trabalho agendado ProcessJob e todos os resultados salvos de suas instâncias de trabalho.

Unregister-ScheduledJob ProcessJob

Conceitos de trabalhos agendados

Um trabalho agendado executa comandos ou um script. Um trabalho agendado pode incluir gatilhos de trabalho que iniciam o trabalho e opções de trabalho que definem condições para a execução do trabalho.

Um gatilho de trabalho inicia um trabalho agendado automaticamente. Um gatilho de trabalho pode incluir uma agenda única ou recorrente ou especificar um evento, como quando um usuário faz logon ou o Windows é iniciado. Um trabalho agendado pode ter um ou mais gatilhos de trabalho, e você pode criar, adicionar, habilitar, desabilitar e obter gatilhos de trabalho.

Os gatilhos de trabalho são opcionais. Você pode iniciar trabalhos agendados imediatamente usando o Start-Job cmdlet, ou adicionando o parâmetro RunNow ao comando Register-ScheduledJob .

As opções de trabalho definem as condições para executar um trabalho agendado. Cada trabalho agendado tem um objeto de opções de trabalho. Você pode criar e editar objetos de opções de trabalho e adicioná-los a um ou mais trabalhos agendados.

Sempre que um trabalho agendado é iniciado, uma instância de trabalho é criada. Use os cmdlets de trabalho do PowerShell para exibir e gerenciar a instância de trabalho.

Os trabalhos agendados são salvos no disco e usam o verbo do cmdlet, Register, em vez de New. Os arquivos XML estão localizados no computador local no diretório $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs.

O PowerShell cria um diretório para cada trabalho agendado e salva os comandos de trabalho, gatilhos de trabalho, opções de trabalho e resultados de trabalho no diretório de trabalho agendado. Os gatilhos e as opções de trabalho não são salvos no disco de forma independente. Eles são salvos no XML de trabalho agendado de cada trabalho agendado ao qual estão associados.

Trabalhos agendados, gatilhos de trabalho e opções de trabalho aparecem no PowerShell como objetos. Os objetos estão interligados, o que os torna fáceis de descobrir e usar em comandos e scripts.

Os trabalhos agendados aparecem como objetos ScheduledJobDefinition . O objeto ScheduledJobDefinition tem uma propriedade JobTriggers que contém os gatilhos de trabalho do trabalho agendado e uma propriedade Options que contém as opções de trabalho. Os objetos ScheduledJobTriggers e ScheduledJobOptions que representam gatilhos e opções de trabalho, respectivamente, têm uma propriedade JobDefinition que contém o trabalho agendado ao qual estão associados. Essa interconexão recursiva facilita a localização dos gatilhos e opções de um trabalho agendado e a localização, script e exibição do trabalho agendado ao qual qualquer gatilho ou opção de trabalho está associado.

Consulte também