Gerenciamento do Agendador de Tarefas com schtasks.exe

Visão geral

Este artigo descreve como gerenciar o Agendador de Tarefas do Windows utilizando a ferramenta de linha de comando schtasks.exe, disponível por padrão em ambientes Windows Server e Windows Client.

Todos os exemplos assumem execução via PowerShell, utilizando sempre o acento grave (`) como caractere de continuação de linha.


Convenção de variáveis

Nome da variável Exemplo de valor Descrição
<<SERVER_NAME>> WSRV2025 Nome do servidor de destino
<<ADMIN_USER>> Administrator Conta que executa a tarefa
<<TASK_NAME>> DailyTempCleanup Nome da tarefa
<<SCRIPT_PATH>> C:\Maintenance\cleanup_temp.ps1 Script a ser executado
<<LOG_PATH>> C:\Maintenance\Logs Pasta de logs
<<BACKUP_PATH>> C:\Maintenance\Backups Pasta de destino para backup de logs de eventos

Sobre continuação de linha em PowerShell e CMD

Todos os comandos deste artigo são pensados para execução em PowerShell.

  • PowerShell: acento grave (`)
  • CMD: circunflexo (^)

Exemplo (PowerShell):

schtasks.exe /Create `
  /TN "Example" `
  /SC DAILY `
  /ST 02:00 `
  /TR "powershell.exe -File example.ps1"

Step 1: Visão geral dos subcomandos de schtasks.exe

Subcomando Finalidade
/Create Criar uma nova tarefa
/Delete Excluir uma tarefa
/Query Listar tarefas, exibir detalhes e exportar em XML
/Change Alterar configuração de uma tarefa
/Run Executar a tarefa imediatamente
/End Encerrar uma tarefa em execução
/ShowSid Exibir o SID da conta de execução

Step 2: /Create – sintaxe básica e principais opções

Step 2.1 Sintaxe geral

schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /TR "<<COMANDO_A_EXECUTAR>>" `
  /SC AGENDAMENTO `
  [outras_opcoes...]

Step 2.2 Opções mais utilizadas

Opção Conteúdo
/SC Tipo de agendamento (DAILY / WEEKLY / MONTHLY / ONLOGON / ONEVENT)
/MO Modificador
/ST HH:mm Horário de início
/D Dia de execução (1–31 ou MON/TUE…)
/RU Conta de execução
/RP Senha (* para entrada interativa)
/RL HIGHEST Executar com privilégios máximos
/F Forçar sobrescrita de tarefa existente

Sobre /MO (modificador)
Parâmetro que ajusta a frequência ou posição do agendamento.

Exemplos:

  • A cada 3 horas → /SC HOURLY /MO 3
  • A cada 2 semanas → /SC WEEKLY /MO 2
  • Segunda quarta-feira do mês → /SC MONTHLY /MO SECOND /D WED
  • Gatilho por evento → /SC ONEVENT /MO [XPath]

Step 2.3 Lista de valores para /SC

/SC Descrição
DAILY Diariamente
WEEKLY Semanalmente
MONTHLY Mensalmente
ONCE Uma única vez
ONSTART Na inicialização do sistema
ONLOGON No logon do usuário
ONIDLE Quando o sistema estiver ocioso
ONEVENT Ao ocorrer um evento no log de eventos

Step 2.4 Tarefa diária

schtasks.exe /Create `
  /TN "DailyTempCleanup" `
  /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Maintenance\cleanup_temp.ps1 -DaysToKeep 7 -LogPath <<LOG_PATH>>" `
  /SC DAILY `
  /ST 02:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.5 Execução no logon (ONLOGON)

schtasks.exe /Create `
  /TN "OnLogonAudit" `
  /SC ONLOGON `
  /TR "powershell.exe -File C:\Scripts\logon_audit.ps1" `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.6 Execução na inicialização (ONSTART)

schtasks.exe /Create `
  /TN "OnStartInit" `
  /SC ONSTART `
  /TR "powershell.exe -File C:\Scripts\startup_init.ps1" `
  /RU "SYSTEM" `
  /RL HIGHEST `
  /F

Step 2.7 Gatilho baseado em log de eventos (ONEVENT)

schtasks.exe /Create `
  /TN "Event101Handler" `
  /SC ONEVENT `
  /EC System `
  /MO "*[System/EventID=101]" `
  /TR "powershell.exe -File C:\Scripts\event_handler.ps1" `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.8 Execução a cada 3 horas

schtasks.exe /Create `
  /TN "Every3Hours" `
  /TR "powershell.exe -File script.ps1" `
  /SC HOURLY `
  /MO 3 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.9 Segunda quarta-feira de cada mês

schtasks.exe /Create `
  /TN "SecondWednesdayTask" `
  /TR "powershell.exe -File task.ps1" `
  /SC MONTHLY `
  /MO SECOND `
  /D WED `
  /ST 03:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.10 Último dia do mês (LASTDAY)

schtasks.exe /Create `
  /TN "LastDayMonthly" `
  /TR "powershell.exe -File script.ps1" `
  /SC MONTHLY `
  /MO LASTDAY `
  /M * `
  /ST 01:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.11 A cada 2 semanas

schtasks.exe /Create `
  /TN "Every2Weeks" `
  /TR "powershell.exe -File script.ps1" `
  /SC WEEKLY `
  /MO 2 `
  /D MON `
  /ST 05:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 3: /Query – listagem e detalhes

Opção Descrição
/FO TABLE Saída em formato tabular
/FO LIST Saída em formato de lista, por campos
/V Exibe informações detalhadas (gatilhos, ações etc.)
/TN "<<TASK_NAME>>" Exibe apenas a tarefa especificada
schtasks.exe /Query /FO TABLE
schtasks.exe /Query /FO LIST /V
schtasks.exe /Query /TN "<<TASK_NAME>>" /FO LIST /V

Step 4: /Change – alteração de configuração

Opção Descrição
/TN Nome da tarefa
/RU Altera a conta de execução
/RP * Solicita nova senha interativamente
/TR Substitui o comando de execução
/ENABLE /DISABLE Habilita ou desabilita a tarefa

Atenção: /Change não permite alterar a definição do gatilho (/SC, /MO, /D, /M).
Se for necessário alterar o agendamento, é mais seguro remover a tarefa com /Delete e recriá-la com /Create.

Alterar conta de execução

schtasks.exe /Change `
  /TN "<<TASK_NAME>>" `
  /RU "<<ADMIN_USER>>" `
  /RP *

Alterar comando de execução

schtasks.exe /Change `
  /TN "<<TASK_NAME>>" `
  /TR "powershell.exe -File <<SCRIPT_PATH>> -LogPath <<LOG_PATH>>"

Habilitar/Desabilitar tarefa

schtasks.exe /Change /TN "<<TASK_NAME>>" /ENABLE
schtasks.exe /Change /TN "<<TASK_NAME>>" /DISABLE

Step 5: /Run (execução imediata) e /End (encerramento)

Opção Descrição
/Run Executa a tarefa imediatamente
/I Ignora restrições de agendamento (data de início/fim etc.)
/End Encerra a tarefa em execução
/TN Nome da tarefa alvo
schtasks.exe /Run /TN "<<TASK_NAME>>"
schtasks.exe /Run /TN "<<TASK_NAME>>" /I

schtasks.exe /End /TN "<<TASK_NAME>>"

Step 6: Importar tarefas a partir de XML

Importação de XML

Opção Descrição
/XML arquivo Cria a tarefa a partir de um arquivo XML
/RU Sobrescreve a conta de execução
/RP * Solicita a senha interativamente
schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /XML "C:\TaskTemplates\<<TASK_NAME>>.xml" `
  /RU "<<ADMIN_USER>>" `
  /RP *

Exportar para XML (via Query)

Opção Descrição
/XML ONE Exporta a definição da tarefa em um único XML
> arquivo Redireciona a saída para um arquivo
schtasks.exe /Query `
  /TN "<<TASK_NAME>>" `
  /XML ONE `
  > C:\TaskTemplates\<<TASK_NAME>>.xml

Step 8: /Delete – remoção de tarefas

Opção Descrição
/Delete Modo de exclusão
/TN Nome da tarefa
/F Exclui sem solicitar confirmação
schtasks.exe /Delete /TN "<<TASK_NAME>>" /F

Step 9: /ShowSid – exibir SID da conta de execução

Opção Descrição
/ShowSid Exibe o SID associado à conta de execução da tarefa
/TN Nome da tarefa
schtasks.exe /ShowSid /TN "<<TASK_NAME>>"

Step 10: Gerenciamento de tarefas em servidor remoto

Opção Descrição
/S "<<SERVER_NAME>>" Servidor de destino (remoto)
/U Usuário para conexão remota
/P * Senha para o usuário remoto (* para entrada interativa)
Demais parâmetros Definição da tarefa, igual ao cenário local
schtasks.exe /Create `
  /S "<<SERVER_NAME>>" `
  /U "<<ADMIN_USER>>" `
  /P * `
  /TN "<<TASK_NAME>>" `
  /TR "powershell.exe -File <<SCRIPT_PATH>>" `
  /SC DAILY `
  /ST 02:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Conclusão

O uso de schtasks.exe facilita a integração do Agendador de Tarefas em cenários de construção de servidores e automação operacional.

  • A combinação de /SC e /MO permite agendamentos flexíveis (diário, semanal, mensal, enésima ocorrência, último dia do mês).
  • Gatilhos ONLOGON, ONSTART e ONEVENT permitem automação orientada por eventos.
  • Com /Query /XML e /Create /XML, é possível exportar e importar definições como modelos reutilizáveis.
  • Os comandos /Change, /Run, /End, /Delete e /ShowSid cobrem o ciclo completo de administração das tarefas.
  • Com /S /U /P, as mesmas definições podem ser replicadas facilmente em múltiplos servidores remotos.