Wenn man ein PowerShell Script erstellt und dieses anschließend ausführen möchte, so öffnet sich meistens der Editor. Gerade das möchte man in der Regel aber nicht. Sinnvoller ist es natürlich wenn das Script direkt ausgeführt wird. In einem älteren Artikel habe ich darüber bereits berichtet. Die Lösung dabei war dort eben die Erstellung einer Verknüpfung. Die detaillierte Vorgehensweise könnt ihr hier gerne nachlesen. Letztens habe ich aber ein interessantere Variant entdeckt, welche meiner Meinung nach auch viel einfacher ist.
Wenn man das Script erstellt hat und es anschließend abspeichert wird es standardmäßig mit dem Editor geöffnet. Klar kann man über das Kontextmenü angeben, dass es mit der PowerShell ausgeführt werden soll. Aber das ist nicht sinnvoll, wenn das Script z.B. über die Aufgabenplanung automatisch gestartet werden soll. Im Prinzip braucht nur das Standardprogramm geändert werden und das geht über die Eigenschaften.
Entsprechend muss man den Standardpfad zur Windows PowerShell angeben. Sofort ersichtlich ist anschließend auch gleich das Icon.
Pfad: C:\Windows\System32\WindowsPowerShell\v1.0\powerShell.exe
Übrigens muss man das Ausführen von Scripts erlauben. Sollten dies nicht der Fall sein, wird es auch nicht funktioniert. Geändert werden müssen hierfür die Ausführungsrichtlinien. Genaueres dazu im Artikel: In der Windows PowerShell Ausführungrichtlinien setzen.











Hallo,
es gibt eine weitere Methode, auf einem beliebigen Rechner Powershell-Scripte „ad hoc“ auszuführen: Dazu muss die Extension .PS1 der Datei nur in .CMD umbenannt werden und die erste Zeile aus folgendem Code ergänzt werden:
# 2>nul & @cls & @copy /y „%~f0“ „%temp%\%~n0.ps1“ >nul & @powershell -Executionpolicy Bypass -NoProfile -NoLogo -File „%temp%\%~n0.ps1“ %* & @pause & @exit /b
# The real PowerShell code starts here – without any decoding. Note: This must be a batch file type like .CMD or .BAT
# V1.0 on 2024-11-18 by Tom.Stein@web.de: Public edition
foreach ($i in $args)
{
Write-Host $i
}
Erläuterung: Das „#“ zu Beginn der Datei dient dazu, den Rest der Zeile beim erneuten Starten in Powershell zu ignorieren. Batch generiert eine Fehlermeldung, die durch das Umleiten auf das Nul-Device unterdrückt wird – es entstehen trotzdem einige Schmierzeichen, die wahlweise ignoriert oder mit dem Befehl CLS gelöscht werden können. Dann wird die Batch-Datei temporär als PS1-Datei kopiert und mit Powershell neu gestartet. Außer der ersten Zeile ist also kein Batch-Kommando enthalten.
Mit freundlichen Grüßen
Tom Stein
Hallo,
es gibt eine weitere Methode, auf einem beliebigen Rechner Powershell-Scripte „ad hoc“ auszuführen: Dazu muss die Extension .PS1 der Datei nur in .CMD umbenannt werden und die erste Zeile aus folgendem Code ergänzt werden:
# 2>nul & @cls & @copy /y „%~f0“ „%temp%\%~n0.ps1“ >nul & @powershell -Executionpolicy Bypass -NoProfile -NoLogo -File „%temp%\%~n0.ps1“ %* & @exit /b
# The real PowerShell code starts here – without any decoding. Note: This must be a batch file type like .CMD or .BAT
# V1.0 on 2024-11-18 by Tom.Stein@web.de: Public edition
foreach ($i in $args)
{
Write-Host $i
}
Erläuterung: Das „#“ zu Beginn der Datei dient dazu, den Rest der Zeile beim erneuten Starten in Powershell zu ignorieren. Batch generiert eine Fehlermeldung, die durch das Umleiten auf das Nul-Device unterdrückt wird – es entstehen trotzdem einige Schmierzeichen, die wahlweise ignoriert oder mit dem Befehl CLS gelöscht werden können. Dann wird die Batch-Datei temporär als PS1-Datei kopiert und mit Powershell neu gestartet. Außer der ersten Zeile ist also kein Batch-Kommando enthalten.
Mit freundlichen Grüßen
Tom Stein