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-Job
e 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 ProcessJob que 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.