Quando cerchi di eseguire uno script PowerShell che non è stato firmato da un editore affidabile, potresti ottenere il seguente errore di sicurezza:
“script.ps1 :File path\script.ps1 cannot be loaded. Il file path\script.ps1 non è firmato digitalmente. Non è possibile eseguire questo script sul sistema corrente.”

Questo errore di sicurezza può verificarsi quando la politica di esecuzione di PowerShell è impostata su Allsigned o Remotesigned e lo script non è firmato.

La politica di esecuzione Allsigned permette l’esecuzione di tutti gli script Powershell che sono firmati. Prima di eseguire lo script ti verrà chiesto di confermare che ti fidi dell’editore che ha firmato lo script.

La politica di esecuzione remota limita l’esecuzione degli script scaricati che non sono firmati. Gli script che vengono eseguiti dal computer locale non devono essere firmati.

Soluzione

Ci sono diversi metodi per superare questo errore. Si può scegliere di firmare lo script PowerShell, cambiare la politica di esecuzione, bypassare la politica o sbloccare il file in modo che possa essere eseguito una volta su quella sessione.

Check Execution Policy

Prima di tutto controlla la tua politica di esecuzione usando il cmdlet Get-ExecutionPolicy

PS C:\> Get-ExecutionPolicyAllSigned

Il parametro della lista nel cmdlet Get-ExecutionPolicy ti dice la politica di esecuzione per ogni ambito.

PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned

La politica di esecuzione predefinita per tutte le versioni di Windows tranne Windows 2012 R2 è Restricted. La politica di esecuzione predefinita in Windows 2012 R2 è RemoteSigned.

Changing Execution Policy Permanently

Il metodo più semplice ma non sicuro per sbarazzarsi di questo messaggio di errore è cambiare la ExecutionPolicy usando il cmdlet SetExecutionPolicy. Il seguente comando imposta la politica di esecuzione a unrestricted.

PS C:\> Set-ExecutionPolicy unrestricted

Premete Y per confermare la modifica quando richiesto. La modifica della policy viene aggiornata nel registro e rimarrà fino a quando non la cambierai di nuovo.

Cambiare la policy di esecuzione temporaneamente

Invece di cambiare la policy di esecuzione in modo permanente potresti impostare una policy diversa per una singola sessione PowerShell. Questo viene fatto usando il parametro ExecutionPolicy di powershell.exe

Aprire un prompt dei comandi o PowerShell ed eseguire il comando:

C:\> powershell.exe -executionpolicy -bypass

Il comando di cui sopra apre una sessione PowerShell con la politica di esecuzione per quella sessione impostata su Bypass che significa che nulla è bloccato.

Sbloccare un file che è stato scaricato

Quando la politica di esecuzione è RemoteSigned, i file che vengono scaricati da internet (o da email) sono bloccati per proteggere la tua esecuzione di script non sicuri. Se credi che il contenuto dello script sia sicuro allora puoi sbloccarlo per eseguirlo nella tua sessione usando il cmdlet Unblock-File

PS C:\> Unblock-File -Path C:\Downloads\script1.ps1

Una volta che hai cambiato la Execution policy in modo permanente o temporaneo per una sessione o un particolare script puoi continuare ad eseguire lo script ma prima di farlo assicurati che il contenuto dello script non danneggi il tuo computer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.