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.