Esecuzione di script PowerShell disabilitata: come risolvere

Come gestire le policy di esecuzione degli script PowerShell: la differenza tra le varie configurazioni possibili.

Per impostazione predefinita, sebbene Windows PowerShell sia preinstallato in Windows 10, gli script non vengono automaticamente eseguiti. Il sistema operativo Microsoft utilizza la policy di default Restricted che inibisce il caricamento di qualunque script PowerShell sulla macchina in uso. Si tratta di una misura di sicurezza per scongiurare l’utilizzo di oggetti che potrebbero rappresentare un problema per gli utenti finali, soprattutto se provenienti da fonti inaffidabili.

Windows consente di eseguire singoli comandi PowerShell dalla sua finestra, come abbiamo visto in più occasioni (ad esempio PowerShell per esempi: cosa si può fare), mentre appunto gli script vengono puntualmente bloccati.

Provando ad eseguire un qualunque script dalla finestra di PowerShell si otterrà il messaggio d’errore “L’esecuzione di script è disabilitata nel sistema in uso“.

Un trucchetto che usiamo spesso per “dribblare” temporaneamente la policy di esecuzione di Windows senza modificarla consiste nell’usare la sintassi seguente da una finestra del prompt dei comandi (cmd):

powershell -noprofile -executionpolicy bypass -file ".\nomescript.ps1"

Al posto di .\nomescript.ps1 si può indicare il percorso completo dello script PowerShell da avviare.

Ricorrendo all’Utilità di pianificazione si può anche programmare l’esecuzione di uno script. Basterà digitare Utilità di pianificazione nella casella di ricerca del menu Start, cliccare sulla scheda Azioni, sul pulsante Nuova, digitare powershell.exe nel campo Programma o script quindi -noprofile -executionpolicy bypass -file "c:\PERCORSO\nomescript.ps1" nel campo Argomento effettuando le opportune sostituzioni.

Ovviamente si dovranno poi impostare le schede Generale e Attivazione per assegnare un nome all’attività, specificare l’account utente da usare, indicare se utilizzare i privilegi amministrativi e quando avviare l’operazione pianificata.

Tutto ciò premesso, usando il comando Get-ExecutionPolicy è possibile avere conferma della policy in uso.

Le alternative sono le seguenti:

RemoteSigned

autorizza l’esecuzione di script PowerShell creati in locale o scaricati dalla rete ma contenenti una firma digitale.

AllSigned

autorizza il caricamento degli script con firma digitale attendibile.

Unrestricted

permette l’esecuzione di tutti gli script, compresi quelli sprovvisti di firma digitale.

Se si volesse, anche temporaneamente, modificare la execution policy, sarà sufficiente digitare Set-ExecutionPolicy in una finestra PowerShell aperta con i diritti di amministratore. Ad esempio: Set-ExecutionPolicy RemoteSigned.
Per confermare la variazione, bisognerà premere “S”.

Allorquando si preferisse ripristinare la configurazione di default, basterà digitare Set-ExecutionPolicy Restricted confermando l’applicazione della policy.

Per applicare le variazioni all’utente corrente, basta aggiungere -Scope CurrentUser (esempio: Set-ExecutionPolicy Restricted -Scope CurrentUser oppure Set-ExecutionPolicy Unrestricted -Scope CurrentUser).

Ti consigliamo anche

Link copiato negli appunti