Home
» WINDOWS
»
Come risolvere il problema "L'esecuzione degli script è disabilitata su questo sistema" in PowerShell su Windows 10
Come risolvere il problema "L'esecuzione degli script è disabilitata su questo sistema" in PowerShell su Windows 10
Per risolvere l'errore "l'esecuzione degli script è disabilitata in questo sistema" su un PC Windows 10 personale, imposta PowerShell su RemoteSigned per il tuo account utente , quindi esegui lo script dalla sua cartella. Apri Windows PowerShell e inserisci:
Conferma la modifica quando richiesto. Questa operazione si applica solo al tuo account Windows e non richiede una finestra con privilegi di amministratore. Se devi eseguire uno script attendibile una sola volta, utilizza invece l'opzione di sessione temporanea descritta di seguito.
1. Verifica quale criterio di esecuzione sta bloccando lo script
Nella stessa app PowerShell in cui hai visualizzato l'errore, esegui:
Get-ExecutionPolicy -List
Il comando elenca i criteri per Criteri di gruppo, la sessione corrente, l'account e il computer. RestrictedConsente l'esecuzione di singoli comandi ma blocca i file di script; è il criterio predefinito per i computer client Windows quando non è impostato alcun altro criterio. PowerShell utilizza l'impostazione più specifica applicabile, con le impostazioni di Criteri di gruppo che hanno la precedenza.
Prima di modificare una policy, verifica gli ambiti di applicazione elencati.
I criteri di esecuzione sono una funzionalità di sicurezza che aiuta a impedire l'esecuzione involontaria degli script, ma Microsoft li descrive come una difesa a più livelli piuttosto che come un confine di sicurezza. Uno script può comunque essere dannoso, quindi è necessario esaminarne il codice e verificarne la fonte prima di consentirne l'esecuzione. Consultare la guida ai criteri di esecuzione di Windows PowerShell 5.1 di Microsoft .
2. Consenti gli script locali per il tuo account
Per gli script che crei o di cui ti fidi, imposta i criteri a livello utente su RemoteSigned:
Quando PowerShell ti chiede se vuoi modificare i criteri di esecuzione, digita Ye premi Invio se intendi procedere. La modifica ha effetto immediato; non è necessario riavviare PowerShell. Questa operazione CurrentUserinfluisce solo sul tuo account ed evita di modificare l' LocalMachineambito predefinito, che si applica a tutti e richiede una finestra di PowerShell con privilegi elevati.
Conferma la modifica RemoteSigned relativa al solo account quando richiesto.
RemoteSignedConsente l'esecuzione di script locali non contrassegnati come download da Internet. Richiede che gli script scaricati abbiano una firma digitale attendibile, a meno che non si sblocchi deliberatamente un file specifico. Evitare di modificare i criteri in Unrestrictedo Bypasscome soluzione generale: queste impostazioni consentono l'esecuzione di un maggior numero di script con meno avvisi.
3. Eseguire lo script dalla sua cartella
Spostati nella cartella contenente il .ps1file, quindi includi ./(o il simbolo in stile Windows .\) prima del suo nome. Ad esempio:
Set-Location 'C:\Scripts'
.\MyScript.ps1
PowerShell non esegue automaticamente un file dalla directory corrente quando si digita solo il suo nome. Se il percorso contiene spazi o se lo si esegue da un'altra cartella, utilizzare l'operatore di chiamata e racchiudere il percorso completo tra virgolette:
& 'C:\Scripts\My Script.ps1'
Verifica la policy effettiva, quindi esegui lo script tramite il suo percorso.
4. Se uno script scaricato è ancora bloccato
Con RemoteSigned, uno script non firmato scaricato da Internet può rimanere bloccato anche dopo aver modificato i criteri. Prima di tutto, esamina lo script e verifica di fidarti della sua fonte. In tal caso, sblocca solo quel file:
Utilizzare il percorso corretto se il file si trova altrove. Unblock-FileRimuove il marcatore di download da Internet del file; non analizza il codice né rende sicuro uno script non sicuro. Microsoft documenta questo comportamento nel riferimento di Unblock-File di Windows PowerShell 5.1 .
Sblocca solo i file verificati di cui ritieni attendibile la fonte.
Utilizzare una policy temporanea per una sessione
Se non si desidera un'impostazione persistente per utente, chiudere la finestra PowerShell corrente e aprirne una nuova. Quindi eseguire questo comando prima dello script:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
L' Processambito si applica solo a quella sessione di PowerShell e ai relativi processi figlio; chiudendo la finestra, l'ambito viene rimosso. Ciò è comunque soggetto a RemoteSigneddelle regole, pertanto un file non firmato scaricato potrebbe dover essere esaminato e sbloccato singolarmente. La documentazione di riferimento di Set-ExecutionPolicy illustra gli ambiti e i valori dei criteri disponibili.
Se l'errore persiste
Esegui il comando Get-ExecutionPolicyper visualizzare i criteri effettivi e Get-ExecutionPolicy -Listper verificare cosa li controlla. Se è impostato MachinePolicyo UserPolicy, l'esecuzione dello script è controllata dai Criteri di gruppo dell'organizzazione. Non tentare di ignorarli; contatta il tuo amministratore.
Assicurati di aver modificato i criteri nella stessa edizione di PowerShell che utilizzi per eseguire lo script. Windows PowerShell 5.1 powershell.exee PowerShell 7 pwsh.exememorizzano le impostazioni dei criteri separatamente.
Se in seguito desideri rimuovere la modifica per utente, esegui Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser. Questa operazione cancella solo l' CurrentUserimpostazione; la policy effettiva torna a un altro ambito configurato o, se non ne esiste alcuno su Windows 10, a Restricted.
Per la maggior parte dei sistemi Windows 10 personali, RemoteSignedè CurrentUsersufficiente eseguire script locali mantenendo un controllo sugli script contrassegnati come scaricati. Limita l'ambito, verifica il codice sconosciuto e lascia la gestione centralizzata delle impostazioni all'amministratore IT.