Administración del Programador de tareas con schtasks.exe

Descripción general

En este artículo se explica cómo administrar el Programador de tareas de Windows utilizando la herramienta de línea de comandos schtasks.exe, incluida de forma predeterminada en entornos Windows Server y Windows Cliente.

Todos los ejemplos suponen la ejecución desde PowerShell, usando el acento grave (`) como carácter de continuación de línea de forma uniforme.


Convención de variables

Nombre de variable Ejemplo Descripción
<<SERVER_NAME>> WSRV2025 Nombre del servidor de destino
<<ADMIN_USER>> Administrator Cuenta que ejecuta la tarea
<<TASK_NAME>> DailyTempCleanup Nombre de la tarea
<<SCRIPT_PATH>> C:\Maintenance\cleanup_temp.ps1 Script que se va a ejecutar
<<LOG_PATH>> C:\Maintenance\Logs Carpeta de registros
<<BACKUP_PATH>> C:\Maintenance\Backups Destino para copia de logs de eventos

Sobre los caracteres de continuación de línea en PowerShell y CMD

Los comandos de este artículo están pensados para ejecutarse en PowerShell.

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

Ejemplo (PowerShell):

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

Step 1: Resumen de los subcomandos de schtasks.exe

Subcomando Uso
/Create Crear una nueva tarea
/Delete Eliminar una tarea
/Query Listar tareas, ver detalles y exportar XML
/Change Modificar la configuración de una tarea
/Run Ejecutar una tarea de forma inmediata
/End Detener una tarea en ejecución
/ShowSid Mostrar el SID de la cuenta de ejecución

Step 2: /Create – sintaxis básica y opciones principales

Step 2.1 Sintaxis general

schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /TR "<<COMANDO_A_EJECUTAR>>" `
  /SC PROGRAMACIÓN `
  [otras_opciones...]

Step 2.2 Opciones de uso frecuente

Opción Contenido
/SC Tipo de programación (DAILY / WEEKLY / MONTHLY / ONLOGON / ONEVENT)
/MO Modificador
/ST HH:mm Hora de inicio
/D Día de ejecución (1–31 o MON/TUE…)
/RU Cuenta que ejecuta la tarea
/RP Contraseña (* para entrada interactiva)
/RL HIGHEST Ejecutar con privilegios elevados
/F Forzar sobrescritura

Sobre /MO (modificador)
Parámetro que ajusta la frecuencia o posición de la programación.

Ejemplos:

  • Cada 3 horas → /SC HOURLY /MO 3
  • Cada 2 semanas → /SC WEEKLY /MO 2
  • Segundo miércoles de cada mes → /SC MONTHLY /MO SECOND /D WED
  • Disparo por evento → /SC ONEVENT /MO [XPath]

Step 2.3 Lista de valores para /SC

/SC Descripción
DAILY Diario
WEEKLY Semanal
MONTHLY Mensual
ONCE Una sola vez
ONSTART Al iniciar el sistema
ONLOGON Al iniciar sesión el usuario
ONIDLE En estado inactivo
ONEVENT Cuando se produce un evento en el registro de eventos

Step 2.4 Tarea diaria

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 Ejecución al iniciar sesión (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 Ejecución al iniciar el sistema (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 Disparo basado en registro 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 Ejecución 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 Segundo miércoles de cada mes

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 día del mes (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 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 – listado y detalles

Opción Descripción
/FO TABLE Salida en formato tabla
/FO LIST Salida en formato lista por campos
/V Incluye información detallada (disparadores, acciones, etc.)
/TN "<<TASK_NAME>>" Muestra solo la tarea especificada
schtasks.exe /Query /FO TABLE
schtasks.exe /Query /FO LIST /V
schtasks.exe /Query /TN "<<TASK_NAME>>" /FO LIST /V

Step 4: /Change – modificación de configuración

Opción Descripción
/TN Nombre de la tarea
/RU Cambia la cuenta de ejecución
/RP * Solicita interactivamente la nueva contraseña
/TR Sustituye el comando de ejecución
/ENABLE /DISABLE Habilita o deshabilita la tarea

Atención: con /Change no se pueden modificar las definiciones de disparador (/SC, /MO, /D, /M).
Si necesita cambiar la programación, es más seguro eliminar la tarea con /Delete y volver a crearla con /Create.

Cambio de cuenta de ejecución

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

Cambio de comando de ejecución

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

Habilitar/Deshabilitar tarea

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

Step 5: /Run (ejecución inmediata) y /End (detener)

Opción Descripción
/Run Ejecuta la tarea inmediatamente
/I Ignora las restricciones de programación (fecha de inicio/fin, etc.)
/End Detiene la tarea en ejecución
/TN Nombre de la tarea objetivo
schtasks.exe /Run /TN "<<TASK_NAME>>"
schtasks.exe /Run /TN "<<TASK_NAME>>" /I

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

Step 6: Importar tareas desde XML

Importación desde XML

Opción Descripción
/XML archivo Crea la tarea a partir de una definición XML
/RU Sobrescribe la cuenta de ejecución
/RP * Solicita la contraseña de forma interactiva
schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /XML "C:\TaskTemplates\<<TASK_NAME>>.xml" `
  /RU "<<ADMIN_USER>>" `
  /RP *

Exportación a XML (mediante Query)

Opción Descripción
/XML ONE Exporta la definición de la tarea como un único XML
> archivo Redirige la salida a un archivo
schtasks.exe /Query `
  /TN "<<TASK_NAME>>" `
  /XML ONE `
  > C:\TaskTemplates\<<TASK_NAME>>.xml

Step 8: /Delete – eliminación de tareas

Opción Descripción
/Delete Modo de eliminación
/TN Nombre de la tarea
/F Forzar eliminación sin confirmación
schtasks.exe /Delete /TN "<<TASK_NAME>>" /F

Step 9: /ShowSid – mostrar SID de la cuenta de ejecución

Opción Descripción
/ShowSid Muestra el SID asociado a la cuenta de ejecución
/TN Nombre de la tarea
schtasks.exe /ShowSid /TN "<<TASK_NAME>>"

Step 10: Administración de tareas en servidores remotos

Opción Descripción
/S "<<SERVER_NAME>>" Servidor de destino (remoto)
/U Usuario para la conexión remota
/P * Contraseña del usuario remoto (* para entrada interactiva)
Resto de opciones Definición de la tarea, igual que en el caso 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

Conclusión

El uso de schtasks.exe facilita la integración del Programador de tareas de Windows en escenarios de construcción de servidores y automatización operativa.

  • La combinación de /SC y /MO permite definir programaciones flexibles (diaria, semanal, mensual, enésima semana, último día del mes).
  • Los disparadores ONLOGON, ONSTART y ONEVENT permiten automatización basada en eventos.
  • Con /Query /XML y /Create /XML es posible exportar e importar definiciones de tareas como plantillas reutilizables.
  • Los comandos /Change, /Run, /End, /Delete y /ShowSid cubren todo el ciclo de administración de tareas.
  • Mediante /S /U /P, las mismas definiciones se pueden desplegar fácilmente en varios servidores remotos.