När du försöker köra ett PowerShell-skript som inte har signerats av Trusted Publisher kan du få följande säkerhetsfel.
<PowerShell-skriptfil> är inte digitalt signerad. Du kan inte köra
det här skriptet på det aktuella systemet. Mer information om att köra skript och ställa in exekveringspolicy finns i
om_Execution_Policies på http://go.microsoft.com/fwlink/?LinkID=135170.
Hur man löser felet PowerShell-skriptet är inte digitalt signerat?
Det finns några lösningar på det här problemet. Du kan signera det PowerShell-skript som du vill köra, ändra exekveringspolicyn, kringgå policyn eller avblockera filen så att den kan köras en gång i den sessionen.
Kontrollera exekveringspolicy
Du kan köra cmdlet Get-ExecutionPolicy för att hämta din exekveringspolicy.
Du kan också lägga till -list-parametern för att hämta exekveringspolicyn för varje scope.
Ändra exekveringspolicy permanent
Den enklaste men osäkra metoden för att bli av med det här felmeddelandet är att ändra ExecutionPolicy med hjälp av cmdlet Set-ExecutionPolicy och ange exekveringspolicyn till obegränsad.
Set-ExecutionPolicy -ExecutionPolicy unrestricted
Ändra exekveringspolicy tillfälligt
För att ändra exekveringspolicyn tillfälligt kan du använda cmdlet Set-ExecutionPolicy med inställningen ByPass.
Set-ExecutionPolicy -ExecutionPolicy ByPass
Nedan följer en detaljerad beskrivning av de acceptabla värdena för parametern -ExecutionPolicy:
- Restricted. Laddar inte konfigurationsfiler eller kör skript. Restricted är standardprincipen för körning.
- AllSigned. Kräver att alla skript och konfigurationsfiler signeras av en betrodd utgivare, inklusive skript som du skriver på den lokala datorn.
- RemoteSigned. Kräver att alla skript och konfigurationsfiler som hämtas från Internet signeras av en betrodd utgivare.
- Obegränsad. Laddar alla konfigurationsfiler och kör alla skript. Om du kör ett osignerat skript som laddats ner från Internet uppmanas du att begära tillstånd innan det körs.
- Bypass. Ingenting blockeras och det finns inga varningar eller uppmaningar.
- Odefinierad. Tar bort den för närvarande tilldelade exekveringsprincipen från det aktuella tillämpningsområdet. Den här parametern tar inte bort en exekveringsprincip som är inställd i ett grupprincipområde.
Standardområde för kommandot Set-ExecutionPolicy är LocalMachine. Du kan också ange i vilket scope policyn ska ställas in genom att lägga till parametern -Scope. Nedan följer en detaljerad beskrivning av de områden som du kan ställa in:
- Process:
- CurrentUser: Exekveringspolicyn påverkar endast den aktuella användaren.
- LocalMachine: Exekveringspolicyn påverkar endast den aktuella användaren:
Om du vill ta bort en exekveringsprincip från ett visst tillämpningsområde ställer du in exekveringspolicyn för det tillämpningsområdet på Undefined.