Menú Cerrar

Cómo crear una tarea programada para mantener Restauración del Sistema apagada en Windows

En Windows, la función de Restauración del Sistema puede activarse manualmente o por ciertos cambios del sistema. Si deseas mantenerla desactivada de forma automática, puedes crear una tarea programada que revise cada 24 horas si está activa y la vuelva a apagar.

Este método utiliza PowerShell y el Programador de tareas de Windows. La tarea se ejecutará con permisos elevados como SYSTEM, por lo que no dependerá de que un usuario tenga la sesión iniciada.

¿Qué hace este script?

  • Crea una carpeta llamada RestauracionOff dentro de la carpeta del usuario que ejecuta el script.
  • Guarda un script de mantenimiento en PowerShell.
  • Crea una tarea programada llamada Mantener Restauracion Sistema Apagada.
  • Ejecuta la tarea cada 24 horas a las 3:00 AM.
  • También ejecuta la tarea al iniciar Windows.
  • Desactiva Restauración del Sistema en la unidad principal, normalmente C:\.
  • Guarda un registro en un archivo de log.

¿Dónde se guardan los archivos?

En esta versión, los archivos se guardan en la carpeta del usuario que ejecuta el script.

Ejemplo:

C:\Users\TuUsuario\RestauracionOff

Dentro de esa carpeta se guardarán:

  • Mantener-Restauracion-Off.ps1
  • restauracion-off.log

Antes de comenzar

Debes abrir PowerShell como Administrador. Para hacerlo:

  1. Presiona el botón de Inicio.
  2. Busca PowerShell.
  3. Haz clic derecho sobre Windows PowerShell.
  4. Selecciona Ejecutar como administrador.

Script para crear la tarea programada

Copia y pega el siguiente código completo en PowerShell ejecutado como administrador:

# Crear tarea para mantener Restauración del Sistema apagada
# Ejecutar como Administrador

$baseDir = Join-Path $env:USERPROFILE "RestauracionOff"
$scriptPath = Join-Path $baseDir "Mantener-Restauracion-Off.ps1"
$taskName = "Mantener Restauracion Sistema Apagada"

New-Item -ItemType Directory -Force -Path $baseDir | Out-Null

$scriptContent = @"
`$ErrorActionPreference = "SilentlyContinue"

`$baseDir = "$baseDir"
`$logPath = Join-Path `$baseDir "restauracion-off.log"

New-Item -ItemType Directory -Force -Path `$baseDir | Out-Null

function Escribir-Log {
    param([string]`$Mensaje)
    "`$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) - `$Mensaje" | Out-File -FilePath `$logPath -Append -Encoding UTF8
}

try {
    # Normalmente Restauración del Sistema trabaja sobre la unidad del sistema, ejemplo C:\
    `$unidadSistema = "`$env:SystemDrive\"

    Disable-ComputerRestore -Drive `$unidadSistema

    Escribir-Log "Restauración del Sistema desactivada en `$unidadSistema"
}
catch {
    Escribir-Log "ERROR: `$(`$_.Exception.Message)"
}
"@

Set-Content -Path $scriptPath -Value $scriptContent -Encoding UTF8 -Force

$action = New-ScheduledTaskAction `
    -Execute "powershell.exe" `
    -Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$scriptPath`""

# Cada 24 horas a las 3:00 AM
$triggerDaily = New-ScheduledTaskTrigger -Daily -At 3:00AM

# También al iniciar Windows
$triggerStartup = New-ScheduledTaskTrigger -AtStartup

$principal = New-ScheduledTaskPrincipal `
    -UserId "SYSTEM" `
    -RunLevel Highest `
    -LogonType ServiceAccount

$settings = New-ScheduledTaskSettingsSet `
    -StartWhenAvailable `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -MultipleInstances IgnoreNew `
    -ExecutionTimeLimit (New-TimeSpan -Minutes 10)

Register-ScheduledTask `
    -TaskName $taskName `
    -Action $action `
    -Trigger @($triggerDaily, $triggerStartup) `
    -Principal $principal `
    -Settings $settings `
    -Force | Out-Null

# Ejecutar una vez inmediatamente
Start-ScheduledTask -TaskName $taskName

Write-Host "Listo. La tarea fue creada y Restauración del Sistema se mantendrá apagada." -ForegroundColor Green
Write-Host "Tarea: $taskName"
Write-Host "Script: $scriptPath"
Write-Host "Carpeta: $baseDir"

Comprobar que la tarea fue creada correctamente

Después de ejecutar el script, puedes comprobar si la tarea existe con este comando:

Get-ScheduledTask -TaskName "Mantener Restauracion Sistema Apagada"

Si la tarea aparece en pantalla, significa que fue creada correctamente.

Ver el registro de ejecución

El script guarda un pequeño historial de ejecución en un archivo de registro dentro de la carpeta del usuario.

Para verlo, usa este comando:

Get-Content "$env:USERPROFILE\RestauracionOff\restauracion-off.log" -Tail 20

Ahí podrás ver cuándo se ejecutó la tarea y si Restauración del Sistema fue desactivada correctamente.

Ejecutar la tarea manualmente

Si quieres probar la tarea sin esperar a que se ejecute automáticamente, puedes usar este comando:

Start-ScheduledTask -TaskName "Mantener Restauracion Sistema Apagada"

Eliminar la tarea programada

Si más adelante deseas quitar esta configuración, ejecuta PowerShell como administrador y usa los siguientes comandos:

Unregister-ScheduledTask -TaskName "Mantener Restauracion Sistema Apagada" -Confirm:$false
Remove-Item "$env:USERPROFILE\RestauracionOff" -Recurse -Force

¿Cada cuánto se ejecuta?

La tarea está configurada para ejecutarse cada 24 horas a las 3:00 AM y también cada vez que inicia Windows.

Esto significa que si alguien activa Restauración del Sistema manualmente, Windows la mantendrá encendida hasta que la tarea se vuelva a ejecutar. Si deseas que la comprobación sea más agresiva, puedes cambiar la frecuencia a cada hora.

Versión más agresiva: revisar cada 1 hora

Si quieres que la tarea revise cada hora en lugar de cada 24 horas, puedes modificar esta línea:

$triggerDaily = New-ScheduledTaskTrigger -Daily -At 3:00AM

Por esta versión:

$triggerDaily = New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration (New-TimeSpan -Days 3650)

Con esto, la tarea se repetirá cada hora durante varios años.

Importante sobre la carpeta del usuario

Aunque la tarea se ejecuta como SYSTEM, el script queda guardado en la carpeta del usuario que creó la tarea. Esto es importante porque si se usara directamente $env:USERPROFILE dentro de la tarea, Windows podría tomar el perfil de SYSTEM y no el perfil del usuario.

Por eso, este script captura la ruta del usuario al momento de crear la tarea y la deja fija dentro del archivo de mantenimiento.

Recomendación final

Si el equipo es de uso personal y no quieres que Windows guarde puntos de restauración, este método te ayuda a mantener Restauración del Sistema desactivada automáticamente.

Sin embargo, debes tomar en cuenta que Restauración del Sistema puede ser útil para recuperar Windows después de errores, instalaciones fallidas o cambios problemáticos. Si decides apagarla, es recomendable tener otro método de respaldo, como una imagen del sistema, copias en disco externo o una solución de backup confiable.

Publicado en Soporte Tecnico

Te puede interesar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *