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