Standardmäßig hat Microsoft die Ausführung von benutzerdefinierten PowerShell-Skripts, a.k.a.-Cmdlets, verhindert, indem die PowerShell-Option "ExecutionPolicy" auf "Restricted" gesetzt wurde. Dies kann leicht geändert werden.
Sie können ExecutionPolicy für PowerShell-Skripts / Cmdlets ändern, indem Sie den PowerShell-Befehl Set-ExecutionPolicy ausführen.
Führen Sie einfach die folgenden Optionen in PowerShell aus, um die Optionen für diesen Befehl zu erläutern:
Set-ExecutionPolicy -ExecutionPolicy -?
Ich persönlich bevorzuge es, die ExecutionPolicy auf "RemoteSigned" zu setzen. Dies erlaubt mir, meine eigenen Skripts auszuführen, verhindert jedoch, dass nicht signierte Skripts von anderen ausgeführt werden:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Testen Sie dies wie folgt: Erstellen Sie ein neues PowerShell-Skript auf Ihrem Desktop. Klicken Sie mit der rechten Maustaste auf Desktop, Neu> Textdokument. Nennen Sie es test.ps1
Klicken Sie mit der rechten Maustaste auf test.ps1 und wählen Sie Bearbeiten. Es sollte sich mit PowerShell ISE (Integrated Scripting Environment) öffnen. Geben Sie im oberen Bereich Folgendes ein:
Echo "Hallo Welt!"
Schlaf starten 10
Speichern Sie es mit Strg + S und schließen Sie es.
Öffnen Sie nun Powershell, wechseln Sie zu Ihrem Desktop und versuchen Sie, das Skript auszuführen:
CD "$ env: userprofile \ Desktop"
. \ test.ps1
Ändern Sie dann Ihre ExecutionPolicy in "RemoteSigned" und versuchen Sie es erneut:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
. \ test.ps1
Beachten Sie, dass das Skript / Cmdlet mit „. \“ Referenziert wird. Sie können auch den vollständigen Pfad verwenden, ihn jedoch nicht ausführen, indem Sie einfach seinen Namen eingeben (sehr Unix, wie?).
Beachten Sie auch die Verwendung von "$ env: userprofile", um den Pfad zu Ihrem Benutzerprofil darzustellen. Im klassischen Windows-Befehlsprozessor wurde dies einfach mit "% userprofile%" dargestellt.
Bitte beachten Sie, dass dies nicht wie angegeben funktioniert, wenn Sie sich nicht in der lokalen Administratorgruppe befinden. Es ist in der Tat eine bewährte Methode, die tägliche Verwendung eines Kontos, das sich in der lokalen Administratorengruppe befindet, zu vermeiden, so dass dies für Sie der Fall sein kann. Um dies zu umgehen, starten Sie einfach powershell als Administrator, um die Ausführungsrichtlinie festzulegen. Siehe hier.