PowerShell ha un numero di modalità di esecuzione che definiscono quale tipo di codice è consentito eseguire, questo è regolato da una chiave di registro che risiede nell'hive HKLM. Ci sono 4 diverse modalità di esecuzione, sono:
- Limitato: La politica di esecuzione predefinita, non esegue script, solo comandi interattivi.
- Tutto firmato: Esegue script; tutti gli script e i file di configurazione devono essere firmati da un editore di cui ci si fida; ti espone al rischio di eseguire script firmati (ma malevoli), dopo aver verificato che ti fidi del publisher.
- Remote Signed: Gli script locali vengono eseguiti senza firma. Qualsiasi script scaricato richiede una firma digitale, anche un percorso UNC.
- illimitato: Esegue script; tutti gli script e i file di configurazione scaricati da applicazioni di comunicazione come Microsoft Outlook, Internet Explorer, Outlook Express e Windows Messenger vengono eseguiti dopo aver confermato di aver compreso il file proveniente da Internet; non è richiesta la firma digitale; ti espone al rischio di eseguire script maligni e non firmati scaricati da queste applicazioni
Il criterio di esecuzione predefinito di PowerShell si chiama Restricted. In questa modalità, PowerShell funziona solo come shell interattiva. Non esegue script e carica solo i file di configurazione firmati da un editore di cui ti fidi. Se si ottiene il brutto errore rosso, la causa più probabile è che si sta tentando di eseguire uno script non firmato. La cosa più sicura da fare è cambiare la politica di esecuzione in modo illimitato, eseguire il tuo script e poi cambiarlo di nuovo in ristretto.
Per cambiarlo in modalità illimitata, eseguire il seguente comando da un PowerShell amministrativo:
Set-ExecutionPolicy Unrestricted
Ti verrà chiesto se sei sicuro di voler modificare la Politica di esecuzione e premi nuovamente il pulsante Invio.
Set-ExecutionPolicy Restricted
Di nuovo ti verrà chiesto se sei sicuro di voler cambiare la modalità di esecuzione, vai avanti e premi invio.