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