Windows 10 verweigert Ausführung von PowerShell-Skript

Dieser Thread ist Teil einer Diskussion zu einem Artikel:  Zum News-Artikel gehen

Billmar

Stammgast
Kleiner Tipp für PowerShell - Neubenutzer:
"Windows PowerShell ISE" starten und dann unter Ansicht "Befehls-Add-On" und "Skriptbereich" anzeigen lassen.
Happy scripting!
 

edger

Stammgast
In der letzten Zeile des Artikels heisst es:
Falls Sie die Einstellung eines Tages auf Standard zurücksetzen wollen, verwenden Sie in einer Admin-PowerShell den Befehl: Get-ExecutionPolicy Default.
Das muss wohl Set-ExecutionPolicy Default heissen.
 

karnickel

Stammgast
Psst, es gibt eine viel bessere Lösung. Damit habe ich voll im Griff, was ich starten lassen will. Die beschriebene Policy hat den grossen Nachteil, dass sie auf Angaben innerhalb der ps1-Datei abstützt, in welcher die Herkunft (Internet/lokal) vermerkt ist. Diese ADS kann allerdings falsch sein, weil die Datei sie durch Umkopieren verlieren kann.

Die folgende Zeile kann in eine Datei meinstart.cmd eingetragen werden:
Code:
cmd.exe /c powershell.exe -executionpolicy bypass -file "%~dp0\meinskript.ps1"

Danach kann sie also per meinstart.cmd von der Kommandozeile oder als Desktop-Verknüpfung gestartet werden. Es wird damit also eine weitere Shell geöffnet (cmd.exe, vielleicht ginge es gar ohne), danach per /c der Rest der Zeile als Kommando abgesetzt. /c sorgt dafür, dass nach Beendung direkt in die CMD-Datei (also meinstart.cmd) zurückgewechselt wird.

Nun wird also powershell.exe mit der Option -executionpolicy bypass gestartet. Dies bewirkt genau, was im Artikel mit Set-ExecutionPolicy auch gemacht wird - nur eben genau für dieses eine Mal. Danach wird die eigentliche Powershell-Skriptdatei mit der Option -file hinterhergereicht.

Dass ich die Datei mit "%dp0\ ... " verpackt habe bewirkt zum Einen, dass Pfade mit Leerzeichen in Windows sauber verarbeitet werden. %dp0 macht zusätzlich sicher, dass Windows die Datei im gleichen Ordner sucht, in dem die CMD-Datei liegt. Danach spielt es nämlich keine Rolle, von wo her die CMD gestartet wird.

Eine Quelle für diesen Beitrag kann ich nicht nennen. Das habe ich mir selber so ausgedacht. Was ich aber sagen kann ist, dass PCTipp diesen Trick gerne hier auf der Website oder in den eigenen Publikationen verwenden und meine Texte unentgeldlich übernehmen darf.
 

Gaby Salvisberg

Super-Moderator
In der letzten Zeile des Artikels heisst es:
Falls Sie die Einstellung eines Tages auf Standard zurücksetzen wollen, verwenden Sie in einer Admin-PowerShell den Befehl: Get-ExecutionPolicy Default.
Das muss wohl Set-ExecutionPolicy Default heissen.
Ups, stimmt! Ich gehe es gleich ändern. Danke für den Hinweis!
Herzliche Grüsse
Gaby
 

An_Earthling

Mitglied
Mit folgendem Befehl gehts:
Powershell als Administrator starten
Danach folgenden Befehl absetzen:

Set-ExecutionPolicy Unrestricted
 
Oben