Le operazioni pianificate, o scheduled task, sono utilizzate da Windows per eseguire periodicamente determinate operazioni, come l’aggiornamento di un browser, delle definizioni dell’antivirus, un backup dei file e tanto altro, in determinati orari o giorni della settimana. Anche se Windows ha una sua interfaccia, l’utilità di pianificazione, per gestire queste attività in questo articolo vedremo come fare tutto tramite PowerShell.

Come gestire operazioni pianificate Windows tramite PowerShell

Una avvertenza importante, alcune operazioni pianificate servono al sistema operativo per gestire determinate operazioni importanti per il suo funzionamento, quindi non provate a cancellare, o disattivare, dei task a caso. Il nostro forum è sempre a disposizione per qualsiasi richiesta di chiarimenti.

Get-ScheduledTask

Il comando, o cmdlet come sarebbe più giusto scrivere, Get-ScheduledTask mostra la lista, e lo stato, di tutte le operazioni pianificate.

Come gestire operazioni pianificate Windows tramite PowerShell

Il dato che più ci interessa, per eseguire le operazioni che vedremo nel resto dell’articolo, è il TaskName.

Come vedete nell’immagine precedente ci sono dei nomi decisamente lunghi e che vengono tagliati, per avere tutti i dettagli del task e il suo nome completo si può aggiungere l’opzione |format-list e quindi il comando diventa:

  • Get-ScheduledTask |format-list

Se vogliamo creare un file .csv che contenga tutte le informazioni dei task utilizziamo:

  • Get-ScheduledTask |Export-csv -path "d:\hash.csv" -Delimiter ";" -NoTypeInformation

Come gestire operazioni pianificate Windows tramite PowerShell

Per ottenere le informazioni di un singolo task si può usare il comando:

  • Get-ScheduledTask -TaskName "Schedule Scan Static Task"

tra le virgolette sostituite il TaskName che vi interessa.

Come gestire operazioni pianificate Windows tramite PowerShell

Se vogliamo filtrare i task attivi, Ready, e quelli disattivi, Disabled, possiamo usare questi due comandi:

  • get-scheduledtask | where state -eq 'Ready'
  • get-scheduledtask | where state -eq 'Disabled'

Se non ci ricordiamo il nome preciso di un task possiamo utilizzare il carattere jolly * così da mostrare tutti quelli che hanno Windows o backup nel nome del task.

Come gestire operazioni pianificate Windows tramite PowerShell

Get-ScheduledTask | Get-ScheduledTaskInfo visualizza quando sono stati eseguiti i task e la data del prossimo avvio.

Come gestire operazioni pianificate Windows tramite PowerShell

Register-ScheduledTask e New-ScheduledTask

Questi due cmdlet, Register-ScheduledTask e New-ScheduledTask, permettono la creazione e registrazione di una nuova operazione pianificata, nei comandi si può decidere il tipo di pianificazione e l’orario in cui eseguirla, -Execute indica il nome del programma da avviare e -WorkingDirectory è la cartella che lo contiene.

  • # Per una pianificazione settimanale da eseguire il venerdì pomeriggio alle 14.00
  • $taskTrigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 2pm
  • # Per una pianificazione giornaliera alle 14.00 del pomeriggio
  • # $tasktrigger = New-ScheduledTaskTrigger -Daily -At 2PM
  • $taskAction = New-ScheduledTaskAction -Execute "Firefox" -WorkingDirectory 'C:\Program Files\Mozilla Firefox\'
  • Register-ScheduledTask 'Apri Firefox alle 14.00' -Action $taskAction -Trigger $taskTrigger

Come gestire operazioni pianificate Windows tramite PowerShell

Unregister-ScheduledTask

Il cmdlet Unregister-ScheduledTask rimuove una operazione pianificata, che magari non serve più eseguire, basta indicare il nome completo del task richiudendolo tra le virgolette.

Con il comando seguente cancelliamo il task di aggiornamento di Firefox:

  • Unregister-ScheduledTask -TaskName "Firefox Background Update S-1-5-21-587358262-3616632592-1359920995-1001 308046B0AF4A39CB"

Se aggiungiamo -Confirm:$false, in fondo al comando, non ci sarà richiesta di conferma per la rimozione del task.

Come gestire operazioni pianificate Windows tramite PowerShell

Disabilitare-abilitare task

Se vogliamo abilitare, o disabilitare, un task, senza cancellarlo dal sistema, le due informazioni che ci serve recuperare sono il TaskName e il TaskPath.

Per recuperare il secondo dato si può usare questo comando:

  • Get-ScheduledTask -TaskName "Backup lunedì" |format-list

L’opzione finale |format-list serve per avere il percorso completo quando è molto lungo.

Per disablitare un task:

  • Disable-ScheduledTask -TaskName "Backup lunedì" -TaskPath \2BrightSparks\SyncBackFree\TURBOLAB-crazy.cat\

Per abilitare un task:

  • Enable-ScheduledTask -TaskName 'Backup lunedì' -TaskPath \2BrightSparks\SyncBackFree\TURBOLAB-crazy.cat\

Come gestire operazioni pianificate Windows tramite PowerShell

Per ulteriori informazioni, potete consultare, nella parte sinistra di questa pagina Microsoft tutti i vari cmdlet che abbiamo visto in questo articolo e molti altri.