Da diese Frage weiterhin Antworten anzieht, die entweder vom Fragentext widerlegt werden oder das eigentliche Problem nicht ansprechen, lesen Sie bitte diese einfache Zusammenfassung dessen, was Sie wissen müssen:
- Dies ist kein "Warum werden bei meiner Standardinstallation von PowerShell keine Skripts ausgeführt?" Frage.
- Dies ist kein "Warum werden bei meiner Installation von PowerShell keine aus dem Internet heruntergeladenen Skripts ausgeführt?" Frage.
- Die Frage ist, warum die
RemoteSigned
Ausführungsrichtlinie die Skriptausführung verhindert, wenn dies nicht der Fall sein sollte.RemoteSigned
ist die einzige Ausführungsrichtlinie, die ich verwenden möchte. Mir ist bekannt, dass andere, weniger restriktive Richtlinien verfügbar sind. Wenn diese Richtlinien akzeptable Ersatzprodukte wären, hätte ich sie stattdessen nur verwendet, und diese Frage würde nicht existieren.- Die Ausführungsrichtlinie ist bereits auf festgelegt
RemoteSigned
. Ein Wechsel vonRemoteSigned
zuRemoteSigned
ist keine Lösung.- Die Skriptdatei wird lokal erstellt und gespeichert.
- Die Skriptdatei ist nicht blockiert. Die Skriptdatei wurde nie blockiert (siehe vorherigen Punkt).
- Die Skriptdatei kann nicht entsperrt werden, da nichts zu entsperren ist (siehe vorherigen Punkt).
- Die Skriptdatei wird (versucht) von einem Administrator ausgeführt.
Windows PowerShell
ist die einzige betroffene Anwendung. WederWindows PowerShell ISE
nochCommand Prompt
andere Tools oder Editoren sind relevant.- Die Ursache des Problems wurde bereits identifiziert (siehe akzeptierte Antwort). Nach fast 8 Jahren denke ich, dass auch alle anderen offensichtlichen Erklärungen, ob zutreffend oder nicht, veröffentlicht wurden. Wenn Sie anders denken , lesen Sie bitte die Frage und die vorhandenen Antworten vollständig durch, bevor Sie Ihre hinzufügen.
Ich verwende Windows PowerShell 2.0 unter 64-Bit Windows 7 Professional. Ich habe ein Skript auf meinem Desktop
, das den folgenden Fehler verursacht, wenn ich versuche, es auszuführen:
File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Ich bin sowohl Domänenadministrator als auch lokaler Administrator. Wenn ich ausgeführt werde Get-ExecutionPolicy -List
, kann ich feststellen, dass die Group Policy Object
zur Konfiguration von PowerShell erstellte RemoteSigned
Ausführungsrichtlinie die Ausführungsrichtlinie auf Computerebene korrekt anwendet :
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Ich habe das Skript selbst erstellt Notepad
und mithilfe des streams
Dienstprogramms von Sysinternals und des Properties
Dateidialogs bestätigt, dass das Skript nicht als aus dem Internet stammend behandelt wird. Wenn ich das Skript auf eine Netzwerkfreigabe auf einem Domänenserver kopiere, kann es ausgeführt werden. Wenn ich Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
es ausführe, darf das lokale Skript immer noch nicht ausgeführt werden. Dies ist sinnvoll, da die Ausführungsrichtlinie im MachinePolicy
Bereich Vorrang hat.
Wie dokumentiert durch about_Execution_Policies
( aktuell ; zum Zeitpunkt der Frage ) RemoteSigned
bedeutet die Richtlinie:
Skripte können ausgeführt werden.
Erfordert eine digitale Signatur eines vertrauenswürdigen Herausgebers für Skripte und Konfigurationsdateien, die aus dem Internet heruntergeladen werden (einschließlich E-Mail- und Instant Messaging-Programmen).
Erfordert keine digitalen Signaturen für Skripte, die Sie ausgeführt und auf dem lokalen Computer geschrieben haben (nicht aus dem Internet heruntergeladen).
Risiken beim Ausführen nicht signierter Skripte aus anderen Quellen als dem Internet und signierter, aber böswilliger Skripte.
Mein Skript ist nicht signiert, aber da es lokal erstellt und ausgeführt wird, sollte es den dritten Punkt oben erfüllen. Deshalb...
- Warum darf mein Skript nicht ausgeführt werden?
- Warum beschwert sich PowerShell darüber, dass mein Skript "nicht digital signiert" ist, wenn diese Anforderung nur für Dateien aus dem Internet gelten sollte?
- Warum kümmert sich PowerShell nicht mehr darum, dass das Skript nicht signiert wird, wenn es von einer Netzwerkfreigabe ausgeführt wird?