Daten|teiler
Kopieren als Kulturtechnik

PowerShell-Skript mit Doppelklick ausführen

3. Juni 2011 von Christian Imhorst

Wenn man im Windows-Explorer auf ein PowerShell-Skript doppelklickt, wird nicht das Skript ausgeführt, so wie man es von Batch-Dateien oder dem Windows Script Host (WSH) gewohnt ist, stattdessen öffnet sich Notepad und zeigt den Inhalt der Textdatei an. Um ein Skript mit einem Doppelklick auszuführen, ist etwas mehr Aufwand nötig.

Zum Testen kann man ganz gut folgendes Skript nehmen, das quasi ein erweitertes „Hallo Welt“-Skript darstellt. Das letzte Read-Host am Ende des Skripts dient dazu, dass das Konsolen-Fenster noch bis zum nächsten Tastendruck geöffnet bleibt und sich nicht gleich wieder schließt:

# HalloWelt.ps1
set-psdebug -strict
 
[string]$Name = Read-Host "Wie heißt Du? "
Write-Host "Hallo $Name!"
Read-Host

Das Skript kann man nun in seinen favorisierten Skript-Ordner speichern und eine Verknüpfung auf den Desktop erstellen. Danach muss man noch die Eigenschaften der Verknüpfung bearbeiten und folgendes eintragen:

powershell.exe -Command "& 'C:\Users\Christian\HalloWelt.ps1'"

Anstelle von C:\Users\Christian\ muss man natürlich den eigenen Pfad zum Skript wählen. Wichtig ist hier das kaufmännische Und (&-Zeichen), da die PowerShell den Pfad in den Anführungszeichen ansonsten als String interpretiert. Anstelle des &-Zeichens kann man auch einen Punkt (.) nehmen:

powershell.exe -Command ". 'C:\Users\Christian\HalloWelt.ps1'"

Ob man das kaufmännische Und wählt, oder den Punkt für das sogenannte dot sourcing, hängt davon ab, welchen Sichtbarkeitsbereich (Scope) die Variablen des Skripts haben sollen. Da der Sichtbarkeitsbereich aber beim direkten Start eines Skripts keine Bedeutung hat, ist es an dieser Stelle nicht wichtig, welcher der beiden Befehle eingesetzt wird. Der Scope spielt allerdings eine wichtige Rolle, wenn man ein Skript direkt aus der Konsole oder aus einem anderen Skript heraus startet.

Anschließend kann man das Skript mit einem Doppelklick auf den Link ausführen. Wenn man das Konsolen-Fenster vor dem nutzer verstecken möchte, kann man die Option -WindowStyle Hidden noch vor -Command einfügen.
Die Parameter im einzelnen findet man bei Microsofts TechNet.

Anstelle des Parameters -command kann man auch -noexit verwenden. Der Vorteil ist, dass die Konsole nach dem Ausführen des Skripts geöffnet bleibt:

powershell.exe -noexit &'C:\Users\Christian\HalloWelt.ps1'

Interessant wird die Geschichte, wenn man mit dieser Methode nicht nur ein einzelnes Skript aufruft, sondern stattdessen die PowerShell schon mit einem Befehl aus dem Ausführen-Dialog heraus startet.

Geschrieben in Powershell, Windows