Attività pianificate
I cmdlet del modulo ScheduledTasks sostituiscono schtasks con una sintassi ad oggetti.
Elencare
Get-ScheduledTask
Get-ScheduledTask -TaskName "Backup"
Get-ScheduledTask | Where-Object State -eq Ready
Get-ScheduledTask -TaskPath "\Microsoft\Windows\*"
Get-ScheduledTaskInfo -TaskName "Backup"
Get-ScheduledTaskInfo mostra l'ultima esecuzione, il risultato (LastTaskResult, 0 = successo) e la prossima esecuzione.
Creare un'attività
Si compone di azione, trigger, impostazioni e principale.
$azione = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Script\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
$princ = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$impost = New-ScheduledTaskSettingsSet -StartWhenAvailable -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 5)
Register-ScheduledTask -TaskName "Backup" -Action $azione -Trigger $trigger -Principal $princ -Settings $impost
Tipi di trigger
New-ScheduledTaskTrigger -Once -At "2026-11-01 08:00"
New-ScheduledTaskTrigger -Daily -At 03:00
New-ScheduledTaskTrigger -Daily -At 03:00 -DaysInterval 2
New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday, Friday -At 08:30
New-ScheduledTaskTrigger -AtStartup
New-ScheduledTaskTrigger -AtLogOn
New-ScheduledTaskTrigger -Once -At 00:00 -RepetitionInterval (New-TimeSpan -Minutes 15) -RepetitionDuration (New-TimeSpan -Days 1)
L'ultimo esempio ripete l'attività ogni 15 minuti per un giorno.
In PowerShell 5.1 la durata di ripetizione "indefinita" si ottiene con -RepetitionDuration ([TimeSpan]::MaxValue); in PowerShell 7 si omette il parametro.
Eseguire, fermare, abilitare
Start-ScheduledTask -TaskName "Backup"
Stop-ScheduledTask -TaskName "Backup"
Disable-ScheduledTask -TaskName "Backup"
Enable-ScheduledTask -TaskName "Backup"
Modificare ed eliminare
$nuovoTrigger = New-ScheduledTaskTrigger -Daily -At 04:00
Set-ScheduledTask -TaskName "Backup" -Trigger $nuovoTrigger
Unregister-ScheduledTask -TaskName "Backup" -Confirm:$false
Esportare e importare
Export-ScheduledTask -TaskName "Backup" | Out-File .\backup.xml
Register-ScheduledTask -TaskName "Backup" -Xml (Get-Content .\backup.xml -Raw)
Account di esecuzione
| Principale | Note |
|---|---|
SYSTEM | Massimi privilegi locali, nessun accesso alle unità di rete mappate né alle risorse di rete con credenziali utente |
| Utente con password | -User e -Password in Register-ScheduledTask; funziona anche se l'utente non è connesso |
-LogonType Interactive | Solo quando l'utente è connesso |
| gMSA | Account gestito dal dominio, senza password da conservare |
Register-ScheduledTask -TaskName "Script" -Action $azione -Trigger $trigger -User "DOMINIO\svc_task" -Password "..." -RunLevel Highest
Evita di lasciare password in chiaro negli script.
Diagnosi
- Controlla
LastTaskResultconGet-ScheduledTaskInfo. - Usa percorsi completi per script e programmi.
- Registro eventi:
Microsoft-Windows-TaskScheduler/Operational(va abilitato).
Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational" -MaxEvents 20
Codici frequenti: 0x0 successo, 0x1 errore generico dello script, 0x41301 in esecuzione, 0x41303 mai eseguita, 0x2 file non trovato.
Eseguire uno script nascosto
-Argument "-WindowStyle Hidden -NoProfile -File C:\Script\task.ps1"