Il PowerShell non è un errore firmato digitalmente spesso si innesca mentre gli utenti eseguono script PowerShell. In genere accade a causa dei valori impostati per la politica di esecuzione di PowerShell.
Come parte dei nostri servizi di gestione dei server, aiutiamo i nostri clienti a correggere regolarmente gli errori relativi a Windows.
Discutiamo oggi le possibili cause e correzioni per questo errore.
Che cosa è PowerShell non è firmato digitalmente errore?
Durante il tentativo di eseguire uno script PowerShell che non è stato firmato dall’editore attendibile, gli utenti spesso vedono un errore di sicurezza “PowerShell non è firmato digitalmente” come mostrato di seguito:
Questo errore di sicurezza può verificarsi quando abbiamo un criterio di esecuzione PowerShell AllSigned o RemoteSigned.
Ora, discutiamo ora alcuni possibili metodi per correggere questo errore.
Come risolvere PowerShell non è un errore firmato digitalmente?
Esistono alcuni metodi possibili per correggere questo errore. Diamo uno sguardo a ciascuno di essi uno per uno.
Verifica e modifica la politica di esecuzione
Il primo passo qui è controllare la politica di esecuzione. Possiamo eseguire Get-ExecutionPolicy cmdlet per ottenere la politica di esecuzione. Il parametro list nel cmdlet Get-ExecutionPolicy ci dice la politica per ogni ambito.
PS C:\> Get-ExecutionPolicy -list
Una volta che abbiamo un’idea delle politiche di esecuzione, il metodo più semplice ma insicuro per eliminare questo messaggio di errore è cambiare ExecutionPolicy in unrestricted.
Inoltre, possiamo modificare la politica di esecuzione utilizzando il cmdlet SetExecutionPolicy. Il seguente comando imposta il criterio di esecuzione su Illimitato:
PS C:> Set-ExecutionPolicy unrestricted.
Premere Y per confermare la modifica quando richiesto.
Aggiorna quindi la modifica dei criteri nel registro e rimane in questo modo fino a quando non lo cambiamo di nuovo
Ignora la sessione PowerShell corrente
Per modificare temporaneamente i criteri di esecuzione, possiamo usare Set-ExecutionPolicy cmdlet con impostazione ByPass.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy ByPass
Questo semplice comando sopra imposterà la politica di esecuzione per bypassare la sessione corrente di PowerShell. Una volta chiusa questa sessione di PowerShell, perde queste impostazioni.
Valori accettabili per il parametro ExecutionPolicy
Di seguito è riportato il dettaglio dei valori accettabili per il parametro-ExecutionPolicy:
- Restricted. Non carica i file di configurazione o non esegue script. Restricted è il criterio di esecuzione predefinito.
- Tutto firmato. Richiede che un publisher attendibile firmi tutti gli script e i file di configurazione, inclusi gli script che scriviamo sul computer locale.
- RemoteSigned. Richiede che un publisher attendibile firmi tutti gli script e i file di configurazione scaricati da Internet.
- Senza restrizioni. Carica tutti i file di configurazione ed esegue tutti gli script. Chiede il permesso se eseguiamo uno script non firmato scaricato da Internet.
- Bypass. Non bloccherà nulla e non ci sono avvisi o richieste.
- Non definito. Rimuove il criterio di esecuzione attualmente assegnato dall’ambito corrente. Questo parametro non rimuoverà un criterio di esecuzione impostato in un ambito di criteri di gruppo.
L’ambito predefinito per il comando Set-ExecutionPolicy è LocalMachine. Possiamo anche specificare l’ambito per la politica aggiungendo il parametro-Scope. Ad esempio, alcuni degli ambiti che possiamo impostare includono:
- Processo: La politica di esecuzione riguarda solo il processo PowerShell corrente.
- CurrentUser: Il criterio di esecuzione riguarda solo l’utente corrente.
- LocalMachine: il criterio di esecuzione riguarda tutti gli utenti del computer.
Inoltre, per rimuovere un criterio di esecuzione da un particolare ambito, impostare il criterio di esecuzione per tale ambito su Undefined.
Sbloccare il file scaricato
Per RemoteSignedExecution Politica, firmare tutti gli script e file di configurazione scaricati da Internet o da e-mail da un editore attendibile.
Se crediamo che il contenuto dello script sia sicuro, possiamo sbloccarlo per l’esecuzione nella sessione utilizzando il cmdlet Unblock-File:
PS C:> Unblock-File -Path C:Downloadsscript1.ps1
Conclusione
In breve, PowerShell non è firmato digitalmente si può verificare un errore di sicurezza quando il criterio di esecuzione di PowerShell è impostato su AllSigned o RemoteSigned. Oggi abbiamo visto come i nostri tecnici di supporto risolvono questo errore.