Per impostazione predefinita, gli script di Windows PowerShell non possono essere eseguiti sul sistema. Per motivi di sicurezza, tutti gli script di PowerShell devono essere firmati digitalmente, un metodo chiamato politica di runtime.
Se uno script non soddisfa questa condizione, gli script PowerShell non possono essere eseguiti sul sistema. Ciò è dovuto principalmente al fatto che lo script può contenere codice maligno che può danneggiare il sistema operativo.
PowerShell ha diverse modalità di esecuzione che determinano il tipo di codice che può essere eseguito. Esistono 5 diverse modalità di esecuzione:
- Limitato – valore predefinito. Gli script sono bloccati e i comandi interattivi sono consentiti.
- Tutti firmati – gli script che hanno una firma digitale sono consentiti.
- Firmato a distanza – gli script locali possono essere eseguiti senza firma. Tutti gli script scaricati devono essere firmati digitalmente.
- Senza restrizioni – l’esecuzione di qualsiasi script è consentita. Quando esegue uno script non firmato che è stato scaricato da Internet, il programma potrebbe richiedere una conferma.
- Bypass – non viene bloccato nulla, non appaiono avvisi o richieste.
La modalità predefinita per PowerShell è“Limitata“. In questa modalità, PowerShell viene eseguito come una shell interattiva. Se non ha configurato PowerShell in precedenza, invece di eseguire lo script, vedrà un messaggio di errore scritto in carattere rosso come nello screenshot sottostante.
Il modo più sicuro per risolvere questo problema è cambiare il criterio di runtime in un criterio senza restrizioni, eseguire lo script e poi tornare al criterio con restrizioni.
Per modificare il criterio di esecuzione in Illimitato, utilizziamo la console PowerShell aperta con privilegi di amministratore ed eseguiamo il seguente comando:
Imposta-Politica di Esecuzione Senza Restrizioni
Dopo aver eseguito il comando, le verrà richiesto di confermare la modifica della politica di runtime. Risponda Y(Sì).
Ora può eseguire lo script. Tuttavia, sta mettendo il sistema a serio rischio, quindi al termine dell’esecuzione dello script, si assicuri di ripristinare il criterio di esecuzione in modalità limitata. Può farlo con il seguente comando:
Imposta-Politica di Esecuzione Limitata
Dopo aver eseguito il comando, le verrà richiesto di confermare la modifica della politica di runtime. Risposta Y(Sì)
I seguenti sono tutti comandi per modificare la politica di esecuzione.
Blocca l’esecuzione di qualsiasi script. Valore predefinito.
Imposta-Politica di Esecuzione Limitata
L’esecuzione di script firmati digitalmente è consentita.
Imposta-Politica di Esecuzione TuttoFirmato
Gli script preparati su un computer locale possono essere eseguiti senza restrizioni, quelli scaricati da Internet – solo se firmati digitalmente.
Imposta la politica di esecuzione RemoteSigned
L’esecuzione di qualsiasi script è consentita. Se esegue uno script non firmato che è stato scaricato da Internet, il programma potrebbe chiedere una conferma.
Imposta-Politica di Esecuzione Senza Restrizioni
Non viene bloccato nulla, non appaiono avvisi o richieste.
Set-ExecutionPolicy Bypass
Per eseguire i comandi di cui sopra senza confermare la modifica, utilizzi il parametro -Force, ad esempio eseguendo il comando:
Set-ExecutionPolicy Bypass -Force
Ora non deve confermare le modifiche durante l’esecuzione dei comandi.