FolioPierEstudos de TI

O Agendador de Tarefas

Nota 13 de 20 · 6 min de leitura
Nesta página
  1. As partes de uma tarefa
  2. A conta e a forma de execução
  3. A ação e a pasta de trabalho
  4. O resultado da execução
  5. As execuções perdidas
  6. Os comandos

Um backup que deixou de rodar sem nenhum aviso, uma rotina que funciona quando executada à mão e falha no horário programado e uma importação que só acontece com alguém conectado ao computador costumam envolver o Agendador de Tarefas. O agendador executa programas e scripts em horários ou em eventos definidos, e cada tarefa tem uma conta, uma pasta de trabalho e condições próprias.

As partes de uma tarefa

O Agendador de Tarefas abre pelo comando taskschd.msc, e as tarefas criadas pelos programas e pelas pessoas ficam na Biblioteca do Agendador de Tarefas. Cada tarefa tem quatro partes principais:

  • Disparadores: quando a tarefa começa, como um horário, a inicialização do computador, a entrada de um usuário ou um evento;
  • Ações: o que a tarefa executa, em geral um programa ou um script, com os argumentos e a pasta de trabalho;
  • Condições: as exigências extras, como o computador estar ocioso, ligado na tomada ou conectado a uma rede;
  • Configurações: o comportamento em situações especiais, como uma execução perdida, uma falha ou uma tarefa que demora demais.

A conta e a forma de execução

A aba Geral define a conta da tarefa e a forma de execução:

  • Só com o usuário conectado: a tarefa roda na sessão do usuário, com as janelas visíveis, e não roda quando ninguém está conectado;
  • Com o usuário conectado ou não: a tarefa roda em segundo plano, sem janela, com a senha da conta gravada no agendador;
  • Com os privilégios mais altos: a tarefa roda com a permissão completa de administrador, sem a confirmação do UAC.

Uma tarefa que roda em segundo plano não enxerga as unidades mapeadas, e o acesso ao caminho de rede completo, como \\servidor-loja\SISTEMA, depende da senha gravada na tarefa. Quando a senha da conta muda, a tarefa deixa de rodar até que a senha nova seja informada nas propriedades da tarefa.

Uma tarefa configurada com a conta SYSTEM roda sem senha e com todas as permissões no computador, mas, em uma rede sem domínio, não tem acesso às pastas compartilhadas dos outros computadores.

A ação e a pasta de trabalho

O campo Iniciar em, da ação, define a pasta de trabalho. Sem esse campo, a tarefa começa na pasta C:\Windows\System32, e um script que usa caminhos relativos procura e grava os arquivos no lugar errado.

Um script do PowerShell é executado pelo programa powershell.exe, com o caminho do script nos argumentos, e a ação completa forma esta linha:

  • powershell.exe -ExecutionPolicy Bypass -File C:\Rotinas\backup.ps1: executa o script indicado, sem depender da política de execução de scripts do computador.

Um arquivo .ps1 indicado diretamente como programa costuma ser aberto pelo editor de texto, e não executado.

O resultado da execução

A lista de tarefas mostra a hora da última execução e o resultado, com um código:

  • 0x0: o programa da ação terminou com o código zero;
  • 0x1: o programa ou o script terminou com um código de erro;
  • 0x2: o arquivo indicado na ação não foi encontrado;
  • 0x41301: a tarefa está em execução;
  • 0x41303: a tarefa ainda não foi executada;
  • 0x80070005: o acesso foi negado;
  • 0x8007052E: a conta ou a senha gravada na tarefa não foi aceita.

O código 0x0 mostra só que o programa terminou com o código zero. Um script que trata os próprios erros e termina normalmente devolve 0x0 mesmo quando a rotina falhou, e o log da própria rotina confirma o resultado.

A aba Histórico mostra cada execução, com o início, o fim e os erros, mas vem desativada em muitos computadores. A opção de habilitar o histórico de todas as tarefas, no painel Ações da janela principal, liga o registro.

As execuções perdidas

Algumas configurações explicam uma tarefa que não rodou no horário:

  • a condição de energia, marcada por padrão, impede o início da tarefa em um notebook que está na bateria;
  • uma tarefa que não rodou porque o computador estava desligado só roda depois quando a opção de executar a tarefa o mais cedo possível após uma execução perdida está marcada;
  • uma execução anterior que não terminou impede as seguintes, porque o padrão é não iniciar uma nova instância, e o resultado fica em 0x41301.

Os comandos

As tarefas também são consultadas e executadas pelo prompt de comando e pelo PowerShell:

  • schtasks /query /fo LIST /v: lista todas as tarefas com os detalhes, inclusive a última execução e o resultado;
  • schtasks /query /tn "Backup diario" /fo LIST /v: mostra os detalhes de uma tarefa;
  • schtasks /run /tn "Backup diario": executa a tarefa na hora, com a conta e as configurações dela;
  • Get-ScheduledTask -TaskName "Backup diario" | Get-ScheduledTaskInfo: mostra, no PowerShell, a última execução, o resultado e a próxima execução.

A execução pelo comando schtasks /run, ou pela opção Executar da tela, testa a tarefa com a conta, a pasta de trabalho e as condições dela, o que a execução do script pelo próprio técnico não reproduz.

No suporte

Diante de uma tarefa que não rodou ou que rodou sem efeito, convém conferir o resultado da última execução, o histórico, a conta da aba Geral, a pasta de trabalho da ação e as condições. O teste pela opção Executar reproduz as condições da tarefa, e o log da própria rotina confirma se o trabalho foi feito, mesmo com o resultado 0x0.

Para guardar

  • Uma tarefa tem disparadores, ações, condições e configurações.
  • A tarefa que roda com o usuário desconectado não enxerga as unidades mapeadas e depende da senha gravada.
  • Sem o campo Iniciar em, a tarefa começa na pasta System32.
  • O resultado 0x0 mostra que o programa terminou com o código zero, e não que a rotina funcionou.
  • O teste pela opção Executar reproduz a conta e as condições da tarefa.
O script de backup funciona quando executado pelo técnico, mas a tarefa agendada termina com o resultado 0x1 e nenhum arquivo é gerado. O que conferir?

A pasta de trabalho e os caminhos usados pelo script. Sem o campo Iniciar em, a tarefa começa em System32, e um caminho relativo ou uma unidade mapeada que funciona na sessão do técnico não existe para a tarefa. A conta da tarefa e as permissões dela no destino completam a conferência.

Uma tarefa diária de envio de arquivos parou de rodar depois que a senha do usuário da loja foi trocada. O que explica?

A tarefa roda com o usuário conectado ou não, e a senha antiga continua gravada no agendador. A falha de logon, com o código 0x8007052E, impede a execução até que a senha nova seja informada na tarefa.

Publicado a partir do Obsidian · FolioPier