Ecco come ottenere il massimo da Windows PowerShell abilitando i criteri di esecuzione degli script.
iPowerShell, per impostazione predefinita, ti consente di eseguire comandi (cmdlet) tramite la sua console. Per eseguire uno script, puoi creare un file di blocco note con il codice dello script, salvarlo con un'estensione di file .ps1 ed eseguirlo tramite la console di PowerShell. Puoi anche incollare direttamente lo script sulla console per l'esecuzione.
Tuttavia, se è la prima volta che esegui uno script tramite PowerShell, riscontrerai l'errore "lo script in esecuzione è disabilitato". Per impostazione predefinita, l'esecuzione di script in PowerShell è disabilitata come misura di sicurezza per impedire l'esecuzione di script dannosi nel sistema. Qui ti mostriamo i due modi per abilitare il criterio di esecuzione dello script su Windows PowerShell.
Come verificare la politica di esecuzione esistente
Puoi utilizzare un cmdlet di PowerShell per ottenere i criteri di esecuzione correnti. Conoscere la tua attuale politica di esecuzione è necessario per sapere se hai bisogno di una modifica della politica o meno.
Per ottenere la policy di esecuzione corrente per l'utente corrente:
- Apri Windows PowerShell come amministratore.
- Digita il seguente comando nella console di PowerShell e premi Invio:
Ottenere-executionpolicy
- Poiché hai riscontrato un errore durante l'esecuzione dello script, è probabile che venga visualizzato il ritorno Limitato come politica di esecuzione corrente.
- Se è necessario visualizzare i criteri di esecuzione per tutti gli ambiti supportati:
Ottenere-executionpolicy -list
Dovrai modificare la policy di esecuzione in RemoteSigned per eseguire gli script locali senza l'errore. Puoi modificare i criteri di esecuzione dall'app Impostazioni e da PowerShell.
Come abilitare i criteri di esecuzione di PowerShell utilizzando l'app Impostazioni
Puoi modificare e impostare i criteri di esecuzione di PowerShell su RemoteSigned usando l'app Impostazioni. Tutto quello che devi fare è modificare le impostazioni di PowerShell nella sezione degli sviluppatori per modificare la politica di esecuzione per abilitare l'esecuzione dello script PowerShell.
Per modificare il criterio di esecuzione utilizzando Impostazioni:
- Premere Vincere + I aprire SeTcose.
- Apri il Privacy e sicurezza scheda nel riquadro di sinistra.
- Successivamente, fai clic su Per gli sviluppatori.
- Fare clic per espandere il PowerShell sezione.
- Sposta l'interruttore su modificare i criteri di esecuzione per consentire l'esecuzione degli script PowerShell locali senza firma: richiedere la firma per gli script remoti.
- Al termine, apri PowerShell, digita get politica di esecuzione, e premere accedere. Il criterio di esecuzione per l'utente corrente è ora impostato su RemoteSigned.
- Se è necessario disabilitare il criterio di esecuzione, attivare l'opzione PowerShell e impostarla su Spento.
Come consentire l'esecuzione degli script in PowerShell utilizzando PowerShell
Puoi usare un Cmdlet di PowerShell per impostare il criterio di esecuzione su RemoteSigned. L'interfaccia della riga di comando semplifica la modifica rapida dei criteri di esecuzione senza utilizzare l'app Impostazioni.
Inoltre, l'app Impostazioni può solo abilitare o disabilitare il criterio di esecuzione RemoteSigned. Considerando che PowerShell ti consente di impostare anche altri criteri e ambiti.
Per modificare il criterio di esecuzione utilizzando PowerShell:
- Apri PowerShell come amministratore.
- Nella finestra di PowerShell, digita il seguente comando e premi accedere:
Impostato-ExecutionPolicy RemoteSigned
- Se richiesto, premere UN per confermare l'azione. Questo imposterà il RemoteSigned criterio di esecuzione per tutti gli utenti. Se si desidera impostare la politica di esecuzione per il file Utente attuale utilizzare solo il parametro Scope seguito dal nome utente.
- Ad esempio, per impostare il RemoteSigned politica di esecuzione per Utente attuale, utilizzare il seguente comando:
Impostato-ExecutionPolicy RemoteSgined -Scopo Utente attuale
- Sostituire Utente attuale nel comando precedente con altri utenti (Scope) secondo le tue esigenze.
Come rimuovere i criteri di esecuzione degli script utilizzando PowerShell
Se si desidera disabilitare l'esecuzione dello script, impostare il criterio di esecuzione su Non definito usando the Set_ExecutionPolicy cmdlet. Questo è uno stato predefinito e impedisce a PowerShell di eseguire qualsiasi script.
Per disabilitare l'esecuzione di script tramite PowerShell:
- Apri PowerShell con autorizzazioni elevate.
- Successivamente, digita il seguente comando e premi Invio per disabilitare l'esecuzione dello script per tutti gli utenti:
Impostato-ExecutionPolicy non definito
- Il comando precedente imposterà la politica di esecuzione predefinita (non definita) per tutti gli utenti. Se si desidera disabilitare l'esecuzione dello script per un ambito specifico, utilizzare il seguente comando:
Impostato-ExecutionPolicy non definito -Scope Utente corrente
- Il comando precedente disabiliterà l'esecuzione dello script per Utente attuale.
Comprensione delle politiche e degli ambiti di esecuzione
In poche parole, la politica di esecuzione di PowerShell è una politica che controlla il modo in cui PowerShell esegue i file di configurazione e gli script. Lo scopo previsto è impedire agli utenti di eseguire accidentalmente script dannosi. I sette criteri di esecuzione di PowerShell sono Default, Restricted, RemoteSigned, AllSigned, Unrestricted, Bypass e Undefined.
La tabella seguente spiega brevemente tutti i criteri di esecuzione di PowerShell:
Politica di esecuzione |
Rinforzo |
Predefinito |
Imposta il criterio di esecuzione predefinito come Limitato su client Windows e RemoteSigned su Windows Server. |
Tutto firmato |
Consente l'esecuzione di script firmati dall'editore. |
Circonvallazione |
Esecuzione illimitata di script per applicazioni più grandi. |
RemoteSigned |
Consente l'esecuzione di script scritti localmente. Richiede firme digitali per gli script scaricati da Internet. |
Limitato |
Non consente l'esecuzione di script, ma solo singoli comandi di PowerShell. |
Non definito |
Imposta il criterio di esecuzione su Limitato per i client Windows e RemoteSigned per Windows Server. |
Senza restrizioni |
Consenti l'esecuzione di script non firmati con un avviso per gli script scaricati da Internet. |
Ambito della politica di esecuzione
È possibile impostare i criteri di esecuzione per un determinato ambito in PowerShell. I cinque ambiti dei criteri di esecuzione sono MachinePolicy, UserPolicy, Processo, CurrentUser, E LocalMachine.
La tabella seguente illustra brevemente tutti gli ambiti dei criteri di esecuzione:
Ambito della politica di esecuzione |
Rinforzo |
UserPolicy |
Configurato da Criteri di gruppo per l'utente corrente. |
Politica della macchina |
Configurato da un criterio di gruppo per tutti gli utenti. |
Utente corrente |
Configurato per l'utente corrente e memorizzato nella sottochiave del Registro di sistema HKEY_CURRENT_MACHINE. |
LocalMachine |
Configurato per tutti gli utenti e archiviato nella sottochiave del registro HKEY_CURRENT_MACHINE. |
Processi |
Influisce sulla sessione corrente di PowerShell e viene automaticamente eliminato quando la sessione viene chiusa. |
Aggiungi o rimuovi i criteri di esecuzione degli script di PowerShell su Windows
L'esecuzione degli script in PowerShell è disabilitata per impostazione predefinita per i client Windows e impostata su RemoteSigned per il server Windows. Gli utenti esperti, tuttavia, possono modificare i criteri di esecuzione per eseguire script PowerShell locali, firmati e non firmati.
In alternativa, puoi ignorare il criterio di esecuzione di PowerShell incollando lo script in una console di PowerShell o ECHO il tuo script nell'input standard di PowerShell. Ciò è utile se si desidera eseguire gli script senza modificare la politica di esecuzione.