Die meisten der vorhandenen Antworten erklären das Wie , aber nur sehr wenige erklären das Warum . Und bevor Sie Code von Fremden im Internet ausführen, insbesondere Code, der Sicherheitsmaßnahmen deaktiviert, sollten Sie genau verstehen, was Sie tun. Hier ist ein bisschen mehr Detail zu diesem Problem.
Auf der TechNet- Seite " Informationen zu Ausführungsrichtlinien" :
Mit Windows PowerShell-Ausführungsrichtlinien können Sie die Bedingungen bestimmen, unter denen Windows PowerShell Konfigurationsdateien lädt und Skripts ausführt.
Die Vorteile, die in PowerShell Basics - Ausführungsrichtlinien und Codesignatur aufgeführt sind , sind:
- Kontrolle der Ausführung - Kontrollieren Sie die Vertrauensstufe für die Ausführung von Skripten.
- Command Highjack - Verhindert das Einfügen von Befehlen in meinen Pfad.
- Identität - Wird das Skript von einem vertrauenswürdigen Entwickler erstellt und signiert und / oder von einem Zertifikat einer vertrauenswürdigen Zertifizierungsstelle signiert?
- Integrität - Skripte können nicht von Malware oder böswilligen Benutzern geändert werden.
Um Ihre aktuelle Ausführungsrichtlinie zu überprüfen, können Sie ausführen Get-ExecutionPolicy
. Aber Sie sind wahrscheinlich hier, weil Sie es ändern möchten.
Dazu führen Sie das Set-ExecutionPolicy
Cmdlet aus.
Beim Aktualisieren der Ausführungsrichtlinie müssen Sie zwei wichtige Entscheidungen treffen.
Typ der Ausführungsrichtlinie:
Restricted
† - Auf dem System kann kein lokales, entferntes oder heruntergeladenes Skript ausgeführt werden.
AllSigned
- Alle Skripte, die ausgeführt werden, müssen digital signiert sein.
RemoteSigned
- Alle Remote-Skripte (UNC) oder heruntergeladenen müssen signiert sein.
Unrestricted
- Für jede Art von Skript ist keine Signatur erforderlich.
Umfang der neuen Änderung
LocalMachine
† - Die Ausführungsrichtlinie betrifft alle Benutzer des Computers.
CurrentUser
- Die Ausführungsrichtlinie betrifft nur den aktuellen Benutzer.
Process
- Die Ausführungsrichtlinie wirkt sich nur auf den aktuellen Windows PowerShell-Prozess aus.
† = Standard
Beispiel : Wenn Sie die Richtlinie nur für den aktuellen Benutzer in RemoteSigned ändern möchten, führen Sie den folgenden Befehl aus:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Hinweis : Um die Ausführungsrichtlinie zu ändern, müssen Sie PowerShell As Adminstrator ausführen . Wenn Sie sich im regulären Modus befinden und versuchen, die Ausführungsrichtlinie zu ändern, wird die folgende Fehlermeldung angezeigt:
Der Zugriff auf den Registrierungsschlüssel 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' wird verweigert. Starten Sie Windows PowerShell mit der Option "Als Administrator ausführen", um die Ausführungsrichtlinie für den Standardbereich (LocalMachine) zu ändern.
Wenn Sie die internen Einschränkungen für Ihre eigenen Skripts verschärfen möchten, die nicht aus dem Internet heruntergeladen wurden (oder zumindest keine UNC-Metadaten enthalten), können Sie die Richtlinie zwingen, nur signierte Skripts auszuführen. Befolgen Sie zum Signieren Ihrer eigenen Skripte die Anweisungen in Scott Hanselmans Artikel zum Signieren von PowerShell-Skripten .
Hinweis : Die meisten Benutzer erhalten diesen Fehler wahrscheinlich, wenn sie Powershell öffnen, da PS beim Start zunächst versucht, Ihr Benutzerprofilskript auszuführen, mit dem Ihre Umgebung so eingerichtet wird, wie Sie es möchten.
Die Datei befindet sich normalerweise in:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Sie können den genauen Speicherort ermitteln, indem Sie die Powershell-Variable ausführen
$profile
Wenn das Profil nichts enthält, was Sie interessiert, und Sie nicht mit Ihren Sicherheitseinstellungen herumspielen möchten, können Sie es einfach löschen und Powershell findet nichts, was nicht ausgeführt werden kann.