Come semplificare le attività con l’automazione degli script di PowerShell
PowerShell è uno strumento piuttosto potente per il controllo dei processi, l’automazione delle attività e tutto il resto sui computer Windows. Onestamente, se si cerca di eseguire script automaticamente, magari per backup, aggiornamenti o semplicemente per la manutenzione ordinaria, PowerShell può farlo. Ma la parte difficile è che Windows ha una misura di sicurezza chiamata criteri di esecuzione, che agisce in un certo senso come un gatekeeper, bloccando l’esecuzione di file non firmati o script provenienti da Internet a meno che non si dia il consenso. Questo può essere un problema, soprattutto se si sta solo cercando di automatizzare un po’ il processo senza dover cliccare continuamente “Sì” o modificare manualmente le impostazioni ogni volta.
Quindi, ecco il punto: devi prima abbassare il criterio di esecuzione, poi impostare la pianificazione. Altrimenti, gli script non verranno eseguiti o verranno bloccati, il che è davvero frustrante. Inoltre, ci sono un paio di modi per automatizzare questi script: utilizzando l’interfaccia utente grafica dell’Utilità di pianificazione per i meno esperti, o PowerShell stesso se hai familiarità con i cmdlet. In entrambi i casi, questi passaggi dovrebbero aiutarti a far funzionare le cose automaticamente senza problemi (o almeno a renderle meno complicate).Tieni presente che, in alcune configurazioni, potrebbero essere necessari diritti di amministratore o autorizzazioni aggiuntive, a seconda dei criteri di sicurezza.
Come automatizzare gli script di PowerShell?
Correggi prima la politica di esecuzione per consentire l’esecuzione degli script
Questa impostazione è ciò che blocca l’esecuzione degli script nella maggior parte dei casi.È un po’ strano, ma se il criterio di esecuzione è impostato su “Limitato” (come di solito è per impostazione predefinita), PowerShell non eseguirà script non firmati. Quindi, è necessario allentare questa sicurezza in modo controllato, idealmente solo per il proprio ambito utente. Per farlo, apri PowerShell con diritti di amministratore (cerca PowerShell, fai clic con il pulsante destro del mouse, quindi scegli “Esegui come amministratore” ) e inserisci questo comando:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Questo ti consente di eseguire script firmati o creati localmente. Su alcune macchine, riceverai un messaggio che ti chiederà se sei sicuro di voler modificare la policy: rispondi semplicemente “Sì”.Se i tuoi script provengono da Internet o da fonti non attendibili, dovrai impostarla su ” Unrestricted. Usa questo comando:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Un po’ di cautela, perché ovviamente Windows deve rendere l’operazione più difficile del necessario. Attenzione: l’impostazione Unrestrictedconsentirà l’esecuzione di tutti gli script, il che può rappresentare un rischio per la sicurezza se non si presta attenzione.
Metodo 1: utilizzo dell’Utilità di pianificazione
Questa è la soluzione più semplice per la maggior parte delle persone, soprattutto se si desidera semplicemente cliccare e dimenticare.È un’operazione semplice, senza bisogno di script. Apri “Esegui con” Win + R, quindi digita taskschd.msc. Questo è il tuo gateway per Utilità di pianificazione. Quindi fai clic con il pulsante destro del mouse su Libreria Utilità di pianificazione e scegli “Crea attività di base” o “Crea attività” per ulteriori opzioni.
- Assegna un nome all’attività e fornisci una breve descrizione (ad esempio “Esegui automaticamente script PowerShell”).Nella scheda Generale, imposta l’esecuzione indipendentemente dall’accesso, se necessario. A volte, potrebbe essere necessario selezionare “Esegui con i privilegi più elevati” se lo script richiede i diritti di amministratore (come solitamente accade).
- Imposta il trigger: quando vuoi che venga eseguito. Ogni giorno, all’avvio, all’accesso, come preferisci. Fai clic su Nuovo, seleziona la pianificazione e premi OK.
- Successivamente, vai alla scheda Azioni, premi Nuovo, quindi seleziona Avvia un programma. Nella casella Programma/script, digita
powershelle in Aggiungi argomenti, inserisci-File "full\path\to\your\script.ps1". Ad esempio:-File "D:\Scripts\backup.ps1". Assicurati che il percorso e il nome del file siano corretti, altrimenti non verrà eseguito. - Se necessario, modifica altre impostazioni come condizioni o impostazioni, quindi fai clic su OK. Fatto.
Questo è praticamente tutto: questa configurazione avvierà lo script a intervalli programmati o in base a trigger specifici. Impostandolo in questo modo, non dovrai più eseguire operazioni manuali, non dovrai più dimenticarti nulla: solo automazione.
Metodo 2: automatizzare direttamente tramite PowerShell
Se ti piace lo scripting e vuoi fare tutto da PowerShell, questo metodo fa al caso tuo.È un po’ più complesso, ma più flessibile e ripetibile. Per prima cosa, devi creare un oggetto trigger:
$Trigger = New-ScheduledTaskTrigger -Once -At 4am
In questo modo, l’attività verrà eseguita una volta alle 4 del mattino. Modificare -Oncel’ -Dailyimpostazione -AtStartupper trigger diversi. Ad esempio, un’esecuzione giornaliera ogni 3 giorni:
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 9am
Successivamente, definisci l’azione, ovvero cosa viene eseguito quando il trigger viene attivato.È qui che New-ScheduledTaskActionentra in gioco:
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"`"
Non dimenticare di sostituire `
$User = "YourDomain\YourUser"
Infine, registra l’attività con Register-ScheduledTask. Un esempio:
Register-ScheduledTask -TaskName "My PowerShell Auto" -Trigger $Trigger -User $User -Action $Action
In questo modo, è possibile automatizzare completamente tutto da PowerShell, il che è utile se si desidera personalizzare molto o automatizzare gli script di installazione. Un piccolo avvertimento: potrebbero essere necessari i diritti di amministratore per alcuni di questi comandi, soprattutto se si creano attività che vengono eseguite con privilegi elevati.
In una configurazione, tutto è andato storto la prima volta, probabilmente a causa della sicurezza o delle autorizzazioni. Dopo un riavvio o l’esecuzione di PowerShell come amministratore, ha funzionato correttamente. A volte, è necessario modificare le autorizzazioni o i criteri utente per ottenere il risultato desiderato.
Con tutto questo a disposizione, è piuttosto semplice far funzionare gli script di PowerShell nei tempi previsti, che siano giornalieri, all’avvio o all’accesso, senza clic aggiuntivi. Basta un po’ di lavoro preliminare, e poi il gioco è fatto.