Praticamente ogni amministratore di sistema ha a che fare con compiti programmati. Sono incredibilmente utili per fare qualcosa in base a vari trigger, ma richiedono un sacco di sforzo manuale per configurare correttamente.
Il vantaggio dei compiti programmati è che puoi costruirne uno con un profondo livello di sofisticazione con opzioni di trigger e vari contesti di sicurezza. Ma dove regna la complessità, possono sorgere errori di configurazione. Quando stai sviluppando questi script di automazione, puoi creare un compito programmato con PowerShell per facilitare il processo. L’uso di PowerShell aiuta a standardizzare il lavoro di gestione e configurazione coinvolto in complicati compiti programmati, con l’ulteriore vantaggio di evitare i soliti errori che derivano dall’inserimento manuale.
Costruisci un’azione del compito programmato
Al minimo, un compito programmato ha un’azione, un trigger e un gruppo di impostazioni associate. Una volta creata l’azione, bisogna anche registrarla nel sistema. È necessario eseguire ogni azione separatamente per creare una singola attività pianificata.
Per creare l’azione, usa il cmdlet New-ScheduledTaskAction che specifica il comando da eseguire. Creiamo un’azione che diventa un po’ meta e invoca uno script PowerShell.
Il comando qui sotto fornisce un esempio di invocazione del motore PowerShell e di passaggio di uno script ad esso utilizzando tutti gli interruttori appropriati della linea di comando per far eseguire lo script in modo non interattivo. Il file dello script risiede sulla macchina su cui verrà eseguita l’attività pianificata.
$Action = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NonInteractive -NoLogo -NoProfile -File "C:\MyScript.ps1"'
Crea un trigger
Poi, hai bisogno di un trigger. Hai diversi valori disponibili, ma questo compito userà un’ora specifica — le 3 del mattino — per eseguire questo script una volta. Per un elenco completo delle opzioni, controlla la pagina di aiuto del cmdlet New-ScheduledTaskTrigger.
$Trigger = New-ScheduledTaskTrigger -Once -At 3am
Crea impostazioni
Prossimo, crea l’attività pianificata usando il comando New-ScheduledTask. Questo comando richiede un valore per il parametro Settings, anche se non stai usando alcuno speciale. Questo è il motivo per cui esegui New-ScheduledTaskSettingsSet per creare un oggetto da passare qui.
$Settings = New-ScheduledTaskSettingsSet
Crea il task pianificato
Dopo aver assegnato tutti gli oggetti come variabili, passa ciascuna di queste variabili al comando New-ScheduledTask per creare un oggetto task pianificato.
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
Registra il task pianificato
A questo punto, hai creato un oggetto task pianificato in memoria. Per aggiungere l’attività pianificata sul computer, è necessario registrare l’attività pianificata utilizzando il cmdlet Register-ScheduledTask.
L’esempio seguente registra un’attività pianificata da eseguire sotto un particolare nome utente. Per eseguire il compito sotto il contesto di un certo utente, è necessario fornire la password. E’ utile guardare la documentazione del comando Register-ScheduledTask per vedere tutte le opzioni da usare con questa cmdlet.
Register-ScheduledTask -TaskName 'My PowerShell Script' -InputObject $Task -User 'username' -Password 'passhere'
Se avete seguito correttamente tutti i passi, dovreste vedere il vostro nuovo task pianificato creato nel Task Scheduler.
Dopo che il compito programmato è stato registrato e visualizzato in Task Scheduler, è possibile eseguire il cmdlet Get-ScheduledTask per vedere il compito.