about_Scheduled_Jobs_Advanced

Aplica-se a: Windows PowerShell 3.0

TÓPICO

about_Scheduled_Jobs_Advanced

DESCRIÇÃO BREVE

Explica os tópicos avançados de trabalho agendado, incluindo a estrutura de arquivos que é subjacente aos trabalhos agendados.

DESCRIÇÃO LONGA

Este tópico inclui as seções a seguir:

  • -- Arquivos e pastas de trabalho agendados

  • – Renomear um trabalho agendado

  • -- Iniciar um trabalho agendado imediatamente

  • – Gerenciar histórico de execução

ARQUIVOS E PASTAS DE TRABALHO AGENDADOS

Windows PowerShell® trabalhos agendados são ambos Windows PowerShell os trabalhos e as tarefas do Agendador de Tarefas. Cada trabalho agendado é registrado no Agendador de Tarefas e salvo em disco em formato de serialização XML do Microsoft .net Framework.

Quando você cria um trabalho agendado, Windows PowerShell cria um diretório para o trabalho agendado no diretório $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs no computador local. O nome do diretório é o mesmo do nome do trabalho.

Este é um diretório ScheduledJobs de exemplo.

        PS C:\ps-test> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         9/29/2011  10:03 AM            ArchiveProjects
        d----         9/30/2011   1:18 PM            Inventory
        d----        10/20/2011   9:15 AM            Backup-Scripts
        d----         11/7/2011  10:40 AM            ProcessJob
        d----         11/2/2011  10:25 AM            SecureJob
        d----         9/27/2011   1:29 PM            Test-HelpFiles
        d----         9/26/2011   4:22 PM            DeployPackage

Cada trabalho agendado tem seu próprio diretório. O diretório contém o arquivo XML de trabalho agendado e um subdiretório de saída.

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Directory:
        C:\Users\User1\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/1/2011   3:00 PM            Output
        -a---         11/1/2011   3:43 PM       7281 ScheduledJobDefinition.xml

O diretório de saída para um trabalho agendado contém seu histórico de execução. Cada vez que um gatilho de trabalho inicia um trabalho agendado, Windows PowerShell cria um diretório chamado de carimbo de data/hora no diretório de saída. O diretório de carimbo de data/hora contém os resultados do trabalho em um arquivo Results.xml em arquivo Status.xml.

O comando a seguir mostra os diretórios de histórico de execução para o trabalho agendado ProcessJob.

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/2/2011   3:00 AM            20111102-030002-260
        d----         11/3/2011   3:00 AM            20111103-030002-277
        d----         11/4/2011   3:00 AM            20111104-030002-209
        d----         11/5/2011   3:00 AM            20111105-030002-251
        d----         11/6/2011   3:00 AM            20111106-030002-174
        d----         11/7/2011  12:00 AM            20111107-000001-914
        d----         11/7/2011   3:00 AM            20111107-030002-376


        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output\20111102-030002-260

        Directory: C:\Users\juneb\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\testjob\output\20111102-030002-260


        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        -a---         11/2/2011   3:00 AM     581106 Results.xml
        -a---         11/2/2011   3:00 AM       9451 Status.xml

Você pode abrir e examinar os arquivos ScheduledJobDefinition.xml, Results.xml e Status.xml ou use o cmdlet Select-XML para analisar os arquivos.

AVISO: Não edite os arquivos XML. Se qualquer arquivo XML contém XML inválido, Windows PowerShell exclua o trabalho agendado e seu histórico de execução, incluindo os resultados do trabalho.

INICIAR UM TRABALHO AGENDADO IMEDIATAMENTE

Você pode iniciar um trabalho agendado imediatamente de uma de duas maneiras:

  • -- Execute o cmdlet Start-Job para iniciar qualquer trabalho agendado

  • -- Adicione o parâmetro RunNow ao comando Register-ScheduledJob para iniciar o trabalho assim que o comando for executado

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

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

        Start-Job -DefinitionName ProcessJob

Para gerenciar o trabalho e obter os resultados do trabalho, usar os cmdlets do trabalho. Para obter mais informações sobre os cmdlets de trabalho, consulte about_Jobs (https://go.microsoft.com/fwlink/?LinkID=113251).

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.

RENOMEAR UM TRABALHO AGENDADO

Para renomear um trabalho agendado, use o parâmetro Name do cmdlet Set-ScheduledJob. Quando você renomeia um trabalho agendado, Windows PowerShell altera o nome do trabalho agendado e o diretório de trabalho agendado. No entanto, ele não altera os nomes das instâncias do trabalho agendado que já foi executado.

OBTENHA OS HORÁRIOS DE INÍCIO E TÉRMINO

Para obter as datas e horas nas quais essas instâncias de trabalho foram iniciadas e concluídas, use as propriedades PSBeginTime e PSEndTime do objeto ScheduledJob que Get-Job retorna dos trabalhos agendados.

O exemplo a seguir usa o parâmetro Property do cmdlet Format-Table para exibir as propriedades PSBeginTime e PSEndTime de cada instância de trabalho em uma tabela. O comando usa uma propriedade calculada para mostrar o tempo decorrido de cada instância de trabalho.

      PS C:\> Get-job -Name UpdateHelpJob | Format-Table -Property ID, PSBeginTime, PSEndTime,
      @{Label="Elapsed Time";Expression={$_.PsEndTime - $_.PSBeginTime}}

      Id   PSBeginTime             PSEndTime                Elapsed Time
      --   -----------             ---------                ------------
       2   11/3/2011 3:00:01 AM    11/3/2011 3:00:39 AM     00:00:38.0053854
       3   11/4/2011 3:00:02 AM    11/4/2011 3:01:01 AM     00:00:59.1188475
       4   11/5/2011 3:00:02 AM    11/5/2011 3:00:50 AM     00:00:48.3692034
       5   11/6/2011 3:00:01 AM    11/6/2011 3:00:54 AM     00:00:52.8013036
       6   11/7/2011 3:00:01 AM    11/7/2011 3:00:38 AM     00:00:37.1930350
       7   11/8/2011 3:00:01 AM    11/8/2011 3:00:57 AM     00:00:56.2570556
       8   11/9/2011 3:00:03 AM    11/9/2011 3:00:55 AM     00:00:51.8142222
       9   11/10/2011 3:00:02 AM   11/10/2011 3:00:42 AM    00:00:40.7195954

GERENCIAR HISTÓRICO DE EXECUÇÃO

Você pode determinar o número de resultados de instância de trabalho que são salvos para cada trabalho de agendamento e excluir o histórico de execução e os resultados do trabalho salvos de qualquer trabalho agendado a qualquer momento.

A propriedade ExecutionHistoryLength de um trabalho agendado determina quantos resultados de instância de trabalho são salvos para o trabalho agendado. Quando o número de resultados salvos excede o valor da propriedade ExecutionHistoryLength, Windows PowerShell exclui os resultados da instância antiga para liberar espaço para os resultados da instância mais recentes.

Por padrão, Windows PowerShell salva o histórico de execução e os resultados de 32 instâncias de cada trabalho agendado. Para alterar esse valor, use os parâmetros MaxResultCount dos cmdlets Register-ScheduledJob ou Set-ScheduledJob.

Para excluir a execução do histórico e todos os resultados de um trabalho agendado, use o parâmetro ClearExecutionHistory do cmdlet Set-ScheduledJob. Excluir o histórico de execução não impede Windows PowerShell de salvar os resultados de novas instâncias do trabalho agendado. Insira o corpo da seção aqui.

O comando a seguir usa o cmdlet Register-ScheduledJob para criar um trabalho agendado. O comando usa o parâmetro MaxResultCount com um valor de 12 para salvar apenas os 12 resultados de instância do trabalho mais recentes do trabalho agendado.

        Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -MaxResultCount 12

O comando a seguir usa o parâmetro MaxResultCount do cmdlet Set-ScheduledJob para aumentar o número de resultados de instância salva a 15.

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

O comando a seguir exclui o histórico de execução e todos os resultados atuais salvos do trabalho agendado ProcessJob.

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

O comando a seguir obtém os valores das propriedades Name e ExecutionHistoryLength de todos os trabalhos agendados no computador e os exibe em uma tabela.

        Get-ScheduledJob | Format-Table -Property Name, ExecutionHistoryLength -AutoSize

CONSULTE TAMBÉM

about_Scheduled_Jobs

about_Scheduled_Jobs_Troubleshooting

about_Jobs