Utilità di pianificazione: automatizzare script e backup senza software di terze parti

Published on 13/07/2026 Windows

Molti si affidano a software di terze parti per pianificare backup o script di manutenzione, ma Windows include da sempre uno strumento completo e gratuito: Utilità di pianificazione (Task Scheduler). Sa gestire trigger complessi, privilegi elevati, riesecuzione in caso di errore e persino il risveglio del PC per eseguire un'attività. Vediamo come usarlo sia da interfaccia grafica sia da riga di comando/PowerShell.

Aprire Task Scheduler

Il modo più veloce è da Esegui (Win+R):

taskschd.msc

In alternativa, da PowerShell puoi già interrogare le attività esistenti senza aprire alcuna finestra:

Get-ScheduledTask | Select-Object TaskName, State | Sort-Object TaskName

Creare un'attività da riga di comando con schtasks

Il comando storico schtasks.exe funziona ancora perfettamente ed è comodo per script rapidi. Esempio: eseguire un backup con robocopy ogni giorno alle 2 di notte:

schtasks /create /tn "BackupDocumenti" ^
  /tr "robocopy C:\Utenti\Dati D:\Backup\Dati /MIR /R:2 /W:5" ^
  /sc daily /st 02:00 /ru SYSTEM /rl highest

Spiegazione dei parametri principali:

  • /tn — nome dell'attività
  • /tr — comando da eseguire
  • /sc daily /st 02:00 — pianificazione giornaliera alle 02:00
  • /ru SYSTEM — esegui con l'account di sistema (non serve una password ed è sempre disponibile, anche senza utenti loggati)
  • /rl highest — esegui con privilegi elevati

Per verificarla o eliminarla in seguito:

schtasks /query /tn "BackupDocumenti" /v /fo list
schtasks /delete /tn "BackupDocumenti" /f

Lo stesso risultato con i cmdlet PowerShell (più leggibile)

Il modulo ScheduledTasks, incluso di default, offre un approccio più strutturato e più facile da versionare in uno script. Esempio: eseguire uno script PowerShell di backup ogni giorno alle 2:00, anche se l'utente non è loggato:

$azione = New-ScheduledTaskAction -Execute "powershell.exe" `
  -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\Backup.ps1"

$trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM

$impostazioni = New-ScheduledTaskSettingsSet `
  -StartWhenAvailable -WakeToRun -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 5)

Register-ScheduledTask -TaskName "BackupGiornaliero" `
  -Action $azione -Trigger $trigger -Settings $impostazioni `
  -User "SYSTEM" -RunLevel Highest

-StartWhenAvailable recupera automaticamente l'esecuzione se il PC era spento all'orario previsto, mentre -WakeToRun risveglia il computer dalla sospensione (funziona solo se l'hardware supporta il wake timer).

Trigger alternativi utili

Oltre all'orario fisso, puoi agganciare l'attività ad altri eventi:

# All'accensione del sistema
$trigger = New-ScheduledTaskTrigger -AtStartup

# Al login di un utente qualsiasi
$trigger = New-ScheduledTaskTrigger -AtLogOn

# Ogni 30 minuti, ripetuto per una giornata intera
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) `
  -RepetitionInterval (New-TimeSpan -Minutes 30) `
  -RepetitionDuration (New-TimeSpan -Days 1)

Controllare la cronologia ed eseguire manualmente

Per lanciare subito un'attività senza aspettare il trigger, ottimo per testare uno script prima di fidarsene:

Start-ScheduledTask -TaskName "BackupGiornaliero"
Get-ScheduledTaskInfo -TaskName "BackupGiornaliero"

Get-ScheduledTaskInfo mostra l'ultimo orario di esecuzione, il prossimo previsto e il codice di uscita dell'ultima run (0 = successo). Se preferisci l'interfaccia grafica, in Task Scheduler seleziona l'attività e, nel pannello centrale, abilita la scheda Cronologia dal menu Azione > Abilita registro cronologia di tutte le attività: per impostazione predefinita è disattivata per risparmiare risorse.

Esportare e importare attività (utile per replicarle su più PC)

# Esporta in XML
schtasks /query /tn "BackupGiornaliero" /xml > BackupGiornaliero.xml

# Importa su un'altra macchina
schtasks /create /tn "BackupGiornaliero" /xml BackupGiornaliero.xml /ru SYSTEM

Consigli pratici

  • Usa sempre -ExecutionPolicy Bypass solo per l'invocazione puntuale dello script, non modificare la policy globale del sistema con Set-ExecutionPolicy Unrestricted.
  • Fai loggare lo script (redirect su file di log) così puoi diagnosticare i fallimenti anche a giorni di distanza.
  • Per i backup, preferisci robocopy a un semplice copy: gestisce meglio riprese su errore, permessi e file in uso.
  • Esegui sempre un test manuale con Start-ScheduledTask prima di fidarti del trigger automatico.

Con questi strumenti, nessun backup o script di manutenzione deve più dipendere dalla tua memoria o da un tool esterno: Windows lo fa già, in modo affidabile, da riga di comando o da interfaccia grafica.