about_Scheduled_Jobs_Basics
Aplica-se a: Windows PowerShell 3.0
TÓPICO
about_Scheduled_Jobs_Basics
DESCRIÇÃO BREVE
Explica como criar e gerenciar trabalhos agendados.
DESCRIÇÃO LONGA
Este tópico mostra como executar tarefas básicas de criação e gerenciamento de trabalhos agendados. Para obter informações sobre as tarefas mais avançadas, consulte about_Scheduled_Jobs_Advanced.
COMO CRIAR UM TRABALHO AGENDADO
Para criar um trabalho agendado, use o cmdlet Register-ScheduledJob. O cmdlet requer um nome e os comandos ou scripts que o trabalho executa. Você pode executar o trabalho imediatamente, adicionando o parâmetro RunNow, ou criar um gatilho de trabalho e definir opções de trabalho ao criar o trabalho, ou em um momento posterior.
Para criar um trabalho que executa um script, use o parâmetro FilePath para especificar o caminho para o arquivo de script. Para criar um trabalho que executa comandos, use o parâmetro ScriptBlock.
O comando a seguir cria o ProcessJob, que executa um comando Get-Process. Essa tarefa agendada tem as opções de trabalho padrão e nenhum gatilho de trabalho.
PS C:\> Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
COMO CRIAR UM GATILHO DO TRABALHO
Gatilhos do trabalho iniciam automaticamente um trabalho agendado. Um gatilho de trabalho pode ter um cronograma recorrente, ser uma única vez ou ser um evento, como quando um usuário faz logon ou o Windows inicia. Cada trabalho pode ter zero, um ou vários gatilhos do trabalho.
Para criar um gatilho de trabalho, use o cmdlet New-JobTrigger. O comando a seguir cria um gatilho do trabalho que inicia um trabalho toda segunda e quinta-feira, às 5:00 AM. Este comando salva o gatilho do trabalho na variável $t.
$t = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
Gatilhos do trabalho são opcionais. Você pode iniciar um trabalho agendado a qualquer momento adicionando o parâmetro RunNow ao seu comando Register-ScheduledJob ou usando os cmdlets Start-Job.
COMO ADICIONAR UM GATILHO DO TRABALHO
Quando você adiciona um gatilho do trabalho a um trabalho agendado, o gatilho do trabalho é adicionado ao arquivo XML trabalho agendado para o trabalho agendado e se torna parte do trabalho agendado.
Você pode adicionar um gatilho de trabalho a um trabalho agendado quando você cria o trabalho agendado ou em um momento posterior, e você pode alterar o gatilho de trabalho de um trabalho agendado a qualquer momento.
Windows PowerShell® usa alguns dos mesmos gatilhos do trabalho que o Agendador de tarefas usa. Para obter informações detalhadas sobre gatilhos de trabalho, consulte o tópico de ajuda sobre o cmdlet New-JobTrigger. Insira o corpo da seção aqui.
O comando a seguir usa o cmdlet Register-ScheduledJob para criar o trabalho de processo. Ele usa o parâmetro Trigger para especificar o gatilho do trabalho na variável $t.
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Command} -Trigger $t
Você também pode adicionar um gatilho do trabalho a um trabalho agendado existente a qualquer momento. O comando a seguir adiciona o gatilho do trabalho na variável $t para o trabalho agendado ProcessJob.
Add-JobTrigger -Name ProcessJob -Trigger $t
Como resultado desse comando, o gatilho do trabalho inicia o ProcessJob automaticamente a cada segunda e quinta-feira às 5:00 AM.
COMO OBTER UM GATILHO DE TRABALHO
Para obter o gatilho de trabalho de um trabalho agendado, use o cmdlet Get-JobTrigger. Use os parâmetros Name, ID e InputObject para especificar o trabalho agendado (não o gatilho do trabalho).
O comando a seguir obtém o gatilho do trabalho de ProcessJob.
PS C:\> Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
COMO CRIAR OPÇÕES DE TRABALHO
Opções de trabalho estabelecem condições para iniciar e executar o trabalho. Cada trabalho tem as opções de trabalho padrão, a menos que você as altere. Como opções de trabalho podem impedir que um trabalho seja executado no horário agendado, é importante entender as opções de trabalho e usá-las com cuidado.
Windows PowerShell usa algumas das mesmas opções de trabalho que o Agendador de Tarefas usa. Para obter informações detalhadas sobre as opções de trabalho, consulte o tópico de ajuda para o cmdlet New-ScheduledJobOption. Digite "Get-Help New-ScheduledJobOption" ou consulte o tópico da Ajuda on-line em https://go.microsoft.com/fwlink/?LinkID=223915.
Opções de trabalho são armazenadas no arquivo XML do trabalho agendado. Você pode definir as opções de trabalho quando você cria um trabalho agendado ou alterá-las a qualquer momento.
O comando a seguir cria uma opção de trabalho agendado em que a opção de trabalho agendado WakeToRun é definida como True. A opção WakeToRun executa o trabalho agendado, mesmo se o computador estiver no estado de suspensão ou hibernação na hora de início agendada. O comando salva as opções do trabalho na variável $o.
$o = New-ScheduledJobOption -WakeToRun
COMO OBTER AS OPÇÕES DE TRABALHO
Para obter as opções de trabalho de um trabalho agendado, use o cmdlet et-ScheduledJobOption. Use os parâmetros Name, ID e InputObject para especificar o trabalho agendado (não as opções do trabalho).
O comando a seguir obtém as opções do trabalho do corpo da seção ProcessJob.Insert aqui.
PS C:\> Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : False
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
COMO ALTERAR AS OPÇÕES DE TRABALHO
Você pode alterar as opções de trabalho de um trabalho agendado quando você cria um trabalho agendado ou a qualquer momento depois disso.
O comando a seguir usa o cmdlet Register-JobTrigger para criar o trabalho de processo. Ele usa o parâmetro ScheduledJobOption para especificar as opções do trabalho na variável $o.
Register-JobTrigger -Name ProcessJob -ScriptBlock {Get-Process} -ScheduledJobOption $o
Você também pode alterar as opções de trabalho de um trabalho agendado existente a qualquer momento. O comando a seguir usa o cmdlet Set-ScheduledJobOption para alterar o valor da opção WakeToRun do ProcessJob scheduledJob como True.
Como todos os cmdlets Set no módulo PSScheduledJob, o cmdlet Set-ScheduledJobOption não tem parâmetros Name ou ID. Você pode usar o parâmetro InputObject para especificar as opções de trabalho agendado ou canalizar um trabalho agendado do cmdlet Get-ScheduledJobOption para Set-ScheduledJobOption.
O comando a seguir usa o cmdlet Get-ScheduledJob para obter o ProcessJob. Ele usa o cmdlet Get-ScheduledJobOption para obter as opções de trabalho de ProcessJob e o cmdlet Set-ScheduledJobOption para alterar a opção de trabalho de WakeToRun a ProcessJob para True.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption | Set-ScheduledJobOption -WakeToRun
COMO OBTER OS TRABALHOS AGENDADOS
Quando um trabalho agendado é iniciado, Windows PowerShell cria uma instância de trabalho que é semelhante a um trabalho em segundo plano do Windows PowerShell padrão. Você pode usar os cmdlets Job, tais como Get-Job, Stop-Job e Receive-Job para gerenciar o fluxo de trabalho.
OBSERVAÇÃO: Para usar os cmdlets do trabalho em instâncias de trabalhos agendados, o módulo PSScheduledJob deve ser importado para a sessão. Para importar o módulo PSScheduledJob, digite "Import-Module PSScheduledJob" (sem as aspas) ou use qualquer cmdlet do trabalho agendado, como Get-ScheduledJob.
Para obter todas as instâncias de Windows PowerShell trabalhos agendados (e todos os trabalhos ativos padrão), use o cmdlet Get-Job. O comando a seguir importa o módulo PSScheduledJob e, em seguida, obtém todos os trabalhos no computador local.
PS C:\> Import-Module PSScheduledJob
PS C:\> Get-Job
O comando a seguir obtém todas as instâncias de ProcessJob no computador local.
PS C:\> 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
A exibição padrão não mostra a hora de início, o que normalmente diferencia as instâncias do mesmo trabalho agendado.
O comando a seguir usa o cmdlet Format-Table para exibir as propriedades BeginTime, ID e Name do trabalho agendado.
PS C:\> Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name Id BeginTime
---- -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM
OBTER RESULTADOS DO TRABALHO AGENDADO
Para obter os resultados de uma instância de um trabalho agendado, use o cmdlet Receive-Job.
OBSERVAÇÃO: Para usar os cmdlets Job em instâncias de trabalhos agendados, o módulo PSScheduledJob deve ser importado para a sessão. Para importar o módulo PSScheduledJob, digite "Import-Module PSScheduledJob" (sem as aspas) ou use qualquer cmdlet do trabalho agendado, como Get-ScheduledJob.
O comando a seguir obtém os resultados da instância do trabalho agendado ProcessJob mais recente (ID = 51)
PS C:\> Import-Module PSScheduledJob
PS C:\> Receive-Job -ID 51 -Keep
Os resultados dos trabalhos agendados são salvos em disco, o parâmetro de manutenção de trabalho de recebimento não é necessário. No entanto, sem o parâmetro Keep, você pode obter os resultados de um trabalho agendado apenas uma única vez em cada sessão Windows PowerShell. Para iniciar uma nova sessão Windows PowerShell, digite "PowerShell" ou abra uma nova janela Windows PowerShell.
CONSULTE TAMBÉM
about_Scheduled_Jobs
about_Scheduled_Jobs_Advanced
about_Scheduled_Jobs_Troubleshooting