Para que un script de mantenimiento preventivo se ejecute de forma completamente desatendida —por ejemplo, todas las semanas en la madrugada sin que el usuario tenga que intervenir—, la mejor opción es registrarlo como una Tarea Programada nativa en Windows utilizando comandos de PowerShell. Esto garantiza que el script corra con los privilegios correctos y en el horario establecido.
A continuación, se detalla el procedimiento paso a paso para crear, configurar y verificar una tarea programada automatizada.
Paso 1: Definir la acción del script
El primer paso consiste en indicarle al sistema qué archivo ejecutable debe abrir y qué parámetros o script de PowerShell debe procesar.
PowerShell
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\MantenimientoPreventivo.ps1"
Verificación: Puedes comprobar que la variable
$Actionse creó correctamente ejecutando$Actionen la consola para ver la ruta y los argumentos asignados.
Paso 2: Configurar el disparador (Cuándo se ejecutará)
Define la frecuencia temporal en la que se lanzará la rutina de mantenimiento. Para entornos corporativos, lo ideal es programarla fuera del horario laboral.
PowerShell
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At "03:00AM"
Verificación: Ejecuta
$Triggeren la consola para confirmar que la frecuencia semanal y la hora (03:00 AM) se configuraron tal como lo planeaste.
Paso 3: Establecer los privilegios de ejecución (Principal)
Dado que el script realiza tareas profundas (limpieza de temporales, actualización de políticas, diagnóstico de discos), necesita ejecutarse con permisos elevados de administrador, idealmente bajo la cuenta del sistema local.
PowerShell
$Principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Verificación: Verifica que la propiedad
RunLevelde la variable$PrincipalmuestreHighest(más altos privilegios).
Paso 4: Registrar y crear la tarea programada en el sistema
Una vez definidos la acción, el disparador y los privilegios, se procede a registrar la tarea de forma definitiva en el Programador de Tareas de Windows.
PowerShell
Register-ScheduledTask -TaskName "MantenimientoPreventivoCorporativo" -Action $Action -Trigger $Trigger -Principal $Principal -Description "Ejecución semanal automática de mantenimiento y limpieza de sistema."
Verificación: El comando devolverá en pantalla una tabla con los detalles de la tarea registrada (Estado, Nombre y Rutas), confirmando su creación exitosa.
Paso 5: Comprobación final y gestión operativa
Para verificar en cualquier momento que la tarea se encuentra activa y lista para ejecutarse según lo programado, puedes utilizar el siguiente comando de consulta:
PowerShell
Get-ScheduledTask -TaskName "MantenimientoPreventivoCorporativo" | Select-Object TaskName, State, Author
Verificación: El estado (
State) devuelto debe serReady(Listo), lo que indica que la tarea está configurada correctamente y esperando su próxima ventana de ejecución.
Comandos útiles adicionales para administración
- Ejecutar la tarea de forma manual (para pruebas):PowerShell
Start-ScheduledTask -TaskName "MantenimientoPreventivoCorporativo" - Eliminar la tarea programada:PowerShell
Unregister-ScheduledTask -TaskName "MantenimientoPreventivoCorporativo" -Confirm:$false
