Erstellen Sie eine Verknüpfung, um ein PowerShell-Skript unter Windows 11/10 per Doppelklick auszuführen – inklusive Ausführungsrichtlinie.

Ein PowerShell-Skript über eine Verknüpfung auszuführen, gelingt in wenigen Minuten. Legen Sie eine Verknüpfung an und tragen Sie als Ziel powershell.exe -ExecutionPolicy Bypass -File „C:\Skripte\MeinSkript.ps1“ ein. Danach startet die PS1-Datei per Doppelklick. Das funktioniert unter Windows 11 und Windows 10, sowohl mit Windows PowerShell 5.1 als auch mit PowerShell 7.
Zudem lassen sich Administratorrechte, ein verstecktes Fenster, ein eigenes Symbol und eine Tastenkombination festlegen. Alle Wege folgen Schritt für Schritt.
Warum eine PS1-Datei nicht einfach per Doppelklick startet
Ein Doppelklick auf eine PS1-Datei öffnet unter Windows standardmäßig nur den Editor. Das ist jedoch kein Fehler, sondern eine bewusste Schutzfunktion. Dadurch soll verhindert werden, dass ein Skript versehentlich startet.
Zusätzlich gibt es im Kontextmenü den Eintrag „Mit PowerShell ausführen“. Allerdings schließt sich das Fenster danach sofort wieder. Außerdem lassen sich dort keine Parameter, keine Administratorrechte und kein Fensterstil festlegen.
Deshalb ist eine Verknüpfung (LNK-Datei) der bequemste Weg. Sie ruft nämlich nicht das Skript selbst auf, sondern die PowerShell. Diese erhält anschließend das Skript als Argument.
Daraus ergeben sich mehrere Vorteile:
- Start per Doppelklick vom Desktop, aus dem Startmenü oder aus der Taskleiste
- Eigene Startoptionen wie „-NoProfile“ oder „-WindowStyle Hidden“
- Administratorrechte direkt in der Verknüpfung
- Eigenes Symbol und eigene Tastenkombination
- Feste Parameter, die bei jedem Start übergeben werden
Voraussetzungen und Vorbereitung
Bevor Sie die Verknüpfung anlegen, sollten Sie drei Punkte klären. Dadurch vermeiden Sie später die häufigsten Fehlermeldungen.
Die richtige PowerShell-Version wählen
Unter Windows 11/10 gibt es zwei Varianten. Beide lassen sich zudem parallel nutzen.
- Windows PowerShell 5.1: Diese Version ist fest in Windows eingebaut. Die Programmdatei heißt powershell.exe.
- PowerShell 7: Diese Version wird zusätzlich installiert. Die Programmdatei heißt hingegen pwsh.exe.
PowerShell 7 wird neben Windows PowerShell 5.1 installiert, wobei die alte Version weiterhin über powershell.exe und die neue über pwsh startet. Welche Datei Sie in der Verknüpfung eintragen, entscheidet also über die genutzte Version.
Aktuell ist außerdem PowerShell 7.6 die empfohlene Ausgabe. Sie ist die LTS-Version mit Unterstützung bis zum 14. November 2028 und basiert auf .NET 10. Dagegen endet der Support für PowerShell 7.4 und 7.5 bereits am 10. November 2026. Wer noch eine dieser Versionen nutzt, sollte deshalb zeitnah wechseln.
Die installierte Version prüfen Sie folgendermaßen:
- Öffnen Sie das Startmenü und tippen Sie „PowerShell“ ein.
- Starten Sie anschließend die gewünschte PowerShell.
- Geben Sie danach diesen Befehl ein:
$PSVersionTable.PSVersion
Falls PowerShell 7 fehlt, installieren Sie es zum Beispiel über winget:
winget install --id Microsoft.PowerShell --source winget
Das Skript an einem festen Ort speichern
Die Verknüpfung verweist auf einen festen Pfad. Deshalb sollte das Skript nicht mehr verschoben werden. Andernfalls läuft die Verknüpfung ins Leere.
Bewährt hat sich zum Beispiel ein eigener Ordner wie C:\Skripte. Zudem sollten Sie auf Umlaute und Sonderzeichen im Pfad verzichten. Leerzeichen sind zwar erlaubt, erfordern jedoch Anführungszeichen.
Für die folgenden Beispiele gilt daher dieser Pfad:
C:\Skripte\Backup.ps1
Die Ausführungsrichtlinie verstehen
Auf Windows-Clients steht die Ausführungsrichtlinie (Execution Policy) standardmäßig auf „Restricted“. Dadurch werden Skripte grundsätzlich blockiert. Dann erscheint die bekannte Meldung, dass die Ausführung von Skripts auf diesem System deaktiviert ist.
Es gibt jedoch zwei einfache Lösungen:
- Nur für die Verknüpfung: Der Parameter -ExecutionPolicy Bypass gilt ausschließlich für diesen einen Start. Die Systemeinstellung bleibt somit unverändert.
- Dauerhaft für Ihr Benutzerkonto: Der folgende Befehl erlaubt lokale Skripte. Heruntergeladene Skripte müssen dagegen weiterhin signiert sein.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Die aktuell geltenden Richtlinien zeigen Sie außerdem so an:
Get-ExecutionPolicy -List
Verknüpfung für ein PowerShell-Skript erstellen (Windows 11/10)
Die folgende Anleitung funktioniert unter Windows 11 und Windows 10 identisch. Zunächst entsteht die Verknüpfung auf dem Desktop. Später können Sie diese jedoch beliebig verschieben.
- Klicken Sie mit der rechten Maustaste auf eine freie Stelle des Desktops.
- Wählen Sie anschließend „Neu“ > „Verknüpfung“.
- Tragen Sie danach im Feld „Geben Sie den Speicherort des Elements ein“ diese Zeile ein:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
- Klicken Sie dann auf „Weiter“.
- Vergeben Sie außerdem einen Namen, zum Beispiel „Backup starten“.
- Bestätigen Sie schließlich mit „Fertig stellen“.
Ein Doppelklick startet nun das Skript. Windows ergänzt dabei den vollständigen Pfad zur powershell.exe automatisch.
Zusätzlich sollten Sie das Arbeitsverzeichnis anpassen:
- Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
- Wählen Sie danach „Eigenschaften“.
- Wechseln Sie anschließend zur Registerkarte „Verknüpfung“.
- Tragen Sie bei „Ausführen in“ den Skriptordner ein, also zum Beispiel C:\Skripte.
- Bestätigen Sie zuletzt mit „OK“.
Dadurch findet das Skript auch Dateien, die es über relative Pfade anspricht. Noch zuverlässiger ist allerdings die Variable $PSScriptRoot im Skript selbst. Sie enthält nämlich immer den Ordner der PS1-Datei.
Die wichtigsten Parameter für das Ziel-Feld
Im Feld „Ziel“ bestimmen Sie, wie die PowerShell startet. Deshalb lohnt sich ein Blick auf die wichtigsten Schalter.
- -File „Pfad“: Führt die angegebene Skriptdatei aus. Alles dahinter gilt zudem als Argument für das Skript. Deshalb muss -File immer am Ende der PowerShell-Optionen stehen.
- -ExecutionPolicy Bypass: Umgeht die Ausführungsrichtlinie für diesen einen Prozess.
- -NoProfile: Lädt kein Benutzerprofil. Dadurch startet das Skript schneller und verhält sich außerdem vorhersehbar.
- -NoExit: Lässt das Fenster nach dem Skript geöffnet. Das ist besonders bei der Fehlersuche hilfreich.
- -NoLogo: Blendet die Startmeldung aus.
- -WindowStyle Hidden: Versteckt das Fenster. Mögliche Werte sind zudem „Normal“, „Minimized“ und „Maximized“.
- -Command „…“: Führt einzelne Befehle statt einer Datei aus.
- -WorkingDirectory „Pfad“: Legt das Startverzeichnis fest. Dieser Schalter existiert allerdings nur in PowerShell 7.
Je nach Zweck ergeben sich daraus unterschiedliche Zeilen. Für die Fehlersuche eignet sich zum Beispiel diese Variante:
powershell.exe -NoExit -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Für den stillen Betrieb passt hingegen diese Zeile:
powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Beachten Sie außerdem die Längenbegrenzung. Das Ziel-Feld nimmt im Eigenschaften-Dialog nämlich nur rund 260 Zeichen auf. Bei langen Pfaden oder vielen Argumenten hilft daher ein kürzerer Ordnername oder eine Batch-Datei.
PowerShell 7 statt Windows PowerShell verwenden
Soll das Skript mit PowerShell 7 laufen, tauschen Sie lediglich die Programmdatei aus. Statt powershell.exe tragen Sie also pwsh.exe ein:
pwsh.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Falls Windows die Datei nicht findet, nutzen Sie stattdessen den vollständigen Pfad. Bei einer Installation per MSI-Paket lautet er so:
"C:\Program Files\PowerShell\7\pwsh.exe" -NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Zusätzlich können Sie das Arbeitsverzeichnis direkt mitgeben:
pwsh.exe -NoProfile -WorkingDirectory "C:\Skripte" -File "C:\Skripte\Backup.ps1"
Doch wann ist welche Version sinnvoll?
- powershell.exe ist auf jedem Windows-PC vorhanden. Deshalb eignet sie sich für Verknüpfungen, die Sie an andere Personen weitergeben.
- pwsh.exe ist dagegen schneller und moderner. Außerdem bietet sie Funktionen wie „ForEach-Object -Parallel“.
- Manche ältere Module laufen jedoch nur in Windows PowerShell 5.1. In diesem Fall bleiben Sie also bei powershell.exe.
Wenn ein Skript eine bestimmte Version voraussetzt, hilft zudem diese erste Zeile im Skript:
#Requires -Version 7.0
Dadurch bricht das Skript mit einer klaren Meldung ab, sobald es in der falschen Version startet.
PowerShell-Skript per Verknüpfung als Administrator ausführen
Viele Skripte benötigen erhöhte Rechte. Das gilt zum Beispiel für Dienste, Registry-Einträge oder Netzwerkeinstellungen. Dafür gibt es drei Wege.
Variante 1: Administratorrechte in der Verknüpfung aktivieren
- Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
- Öffnen Sie danach „Eigenschaften“.
- Klicken Sie anschließend auf der Registerkarte „Verknüpfung“ auf „Erweitert“.
- Setzen Sie dort den Haken bei „Als Administrator ausführen“.
- Bestätigen Sie schließlich zweimal mit „OK“.
Künftig erscheint beim Start die Abfrage der Benutzerkontensteuerung (UAC). Danach läuft das Skript mit vollen Rechten.
Variante 2: Das Skript erhöht sich selbst
Alternativ fordert das Skript die Rechte selbst an. Fügen Sie dazu diesen Block ganz oben ein:
$istAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $istAdmin) {
Start-Process powershell.exe -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`""
exit
}
Dadurch startet sich das Skript bei Bedarf neu, und zwar mit Administratorrechten. Für PowerShell 7 ersetzen Sie außerdem powershell.exe durch pwsh.exe.
Variante 3: Ohne UAC-Abfrage über die Aufgabenplanung
Die UAC-Abfrage lässt sich nicht einfach abschalten. Allerdings gibt es einen sauberen Umweg über die Aufgabenplanung.
- Drücken Sie Windows-Taste + R, tippen Sie taskschd.msc ein und bestätigen Sie mit der Eingabetaste.
- Klicken Sie anschließend rechts auf „Aufgabe erstellen“.
- Vergeben Sie danach einen Namen, zum Beispiel „BackupSkript“.
- Aktivieren Sie zudem „Mit höchsten Privilegien ausführen“.
- Wechseln Sie dann zur Registerkarte „Aktionen“ und klicken Sie auf „Neu“.
- Tragen Sie bei „Programm/Skript“ den Wert powershell.exe ein.
- Tragen Sie außerdem bei „Argumente hinzufügen“ diese Zeile ein:
-NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
- Speichern Sie die Aufgabe schließlich mit „OK“.
Erstellen Sie danach eine Verknüpfung mit folgendem Ziel:
schtasks.exe /run /tn "BackupSkript"
Diese Verknüpfung startet die Aufgabe somit ohne weitere Nachfrage. Trotzdem läuft das Skript mit erhöhten Rechten.
Skript minimiert oder komplett unsichtbar starten
Ein aufblitzendes Konsolenfenster stört oft. Deshalb gibt es mehrere Stufen, um das Fenster zu verbergen.
Stufe 1: Minimiert starten
- Öffnen Sie die „Eigenschaften“ der Verknüpfung.
- Wählen Sie anschließend bei „Ausführen“ den Eintrag „Minimiert“.
- Bestätigen Sie danach mit „OK“.
Dadurch erscheint das Fenster nur noch in der Taskleiste.
Stufe 2: Mit „-WindowStyle Hidden“ verstecken
Ergänzen Sie zusätzlich den Parameter im Ziel:
powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Allerdings blitzt das Fenster dabei kurz auf. Die PowerShell muss nämlich erst starten, bevor sie den Parameter auswertet. In Kombination mit „Ausführen: Minimiert“ fällt das jedoch kaum noch auf.
Stufe 3: Wirklich unsichtbar starten
Für einen vollständig unsichtbaren Start gibt es zwei bewährte Wege.
Weg A: Über conhost.exe im Headless-Modus
Auf aktuellen Versionen von Windows 11/10 funktioniert in der Regel dieses Ziel:
conhost.exe --headless powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Dabei startet die Konsole ohne sichtbares Fenster. Testen Sie diese Variante jedoch vorab, denn der Schalter ist kaum dokumentiert.
Weg B: Über die Aufgabenplanung
Nutzen Sie hierfür die Aufgabe aus dem vorherigen Abschnitt. Wählen Sie zusätzlich auf der Registerkarte „Allgemein“ die Option „Unabhängig von der Benutzeranmeldung ausführen“. Dadurch läuft das Skript im Hintergrund, also ganz ohne Fenster. Die Verknüpfung mit schtasks.exe /run löst die Aufgabe anschließend aus.
Früher war außerdem ein kleines VBScript als Starter verbreitet. Microsoft hat VBScript jedoch abgekündigt und entfernt es schrittweise aus Windows. Deshalb sollten Sie für neue Lösungen darauf verzichten.
Parameter und Argumente über die Verknüpfung übergeben
Oft soll ein Skript mit festen Werten starten. Dafür hängen Sie die Argumente einfach hinter den Skriptpfad an.
Angenommen, das Skript beginnt mit diesem Block:
param(
[string]$Quelle,
[string]$Ziel,
[switch]$Protokoll
)
Dann lautet das Ziel der Verknüpfung zum Beispiel so:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1" -Quelle "D:\Daten" -Ziel "E:\Sicherung" -Protokoll
Dabei gelten einige Regeln:
- Werte mit Leerzeichen gehören immer in doppelte Anführungszeichen.
- Alle Angaben nach dem Skriptpfad gehen außerdem an das Skript, nicht an die PowerShell.
- Schalter wie -NoProfile müssen deshalb vor -File stehen.
So lassen sich zudem mehrere Verknüpfungen für dasselbe Skript anlegen. Jede nutzt dann andere Parameter, zum Beispiel für verschiedene Ordner.
Einzelne Befehle mit „-Command“ ausführen
Manchmal genügt ein Einzeiler, also ganz ohne PS1-Datei. Dafür eignet sich -Command:
powershell.exe -NoProfile -Command "Get-Process | Sort-Object CPU -Descending | Select-Object -First 10; Read-Host 'Weiter mit Enter'"
Ebenso können Sie damit ein Skript aufrufen. Der Aufrufoperator & ist dabei wichtig, sobald der Pfad Leerzeichen enthält:
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\Meine Skripte\Backup.ps1' -Quelle 'D:\Daten'"
Dateien per Drag-and-drop übergeben
Eine Verknüpfung nimmt außerdem Dateien per Drag-and-drop an. Ziehen Sie dazu eine Datei auf das Symbol. Windows hängt den Dateipfad dann automatisch als Argument an.
Im Skript lesen Sie die Pfade anschließend über $args aus:
foreach ($datei in $args) {
Write-Host "Verarbeite: $datei"
}
Read-Host "Fertig. Weiter mit Enter"
Dadurch entsteht zum Beispiel ein praktisches Werkzeug zum Umbenennen oder Konvertieren von Dateien.
Symbol, Tastenkombination und Anheften
Eine Verknüpfung lässt sich zudem komfortabel anpassen. Dadurch finden Sie Ihr Skript schneller wieder.
Eigenes Symbol festlegen
- Öffnen Sie die „Eigenschaften“ der Verknüpfung.
- Klicken Sie anschließend auf „Anderes Symbol“.
- Tragen Sie danach oben einen dieser Pfade ein und drücken Sie die Eingabetaste:
%SystemRoot%\System32\imageres.dll
%SystemRoot%\System32\shell32.dll
- Wählen Sie dann ein Symbol aus.
- Bestätigen Sie schließlich zweimal mit „OK“.
Alternativ wählen Sie über „Durchsuchen“ eine eigene ICO-Datei aus.
Tastenkombination vergeben
- Öffnen Sie erneut die „Eigenschaften“.
- Klicken Sie danach in das Feld „Tastenkombination“.
- Drücken Sie anschließend einen Buchstaben, zum Beispiel B.
- Windows trägt daraufhin automatisch Strg + Alt + B ein.
- Bestätigen Sie zuletzt mit „OK“.
Die Tastenkombination funktioniert allerdings nur, wenn die Verknüpfung auf dem Desktop oder im Startmenü liegt. Zudem sollte die Kombination nicht bereits von einem anderen Programm belegt sein.
An Taskleiste oder Startmenü anheften
Unter Windows 11:
- Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
- Wählen Sie danach „An ‚Start‘ anheften“.
- Für die Taskleiste wählen Sie hingegen „Weitere Optionen anzeigen“ > „An Taskleiste anheften“.
Unter Windows 10:
- Klicken Sie mit der rechten Maustaste auf die Verknüpfung.
- Wählen Sie anschließend „An ‚Start‘ anheften“ oder „An Taskleiste anheften“.
Das Anheften gelingt, weil die Verknüpfung auf eine EXE-Datei zeigt. Eine reine PS1-Datei lässt sich dagegen nicht direkt anheften.
Zusätzlich können Sie die Verknüpfung in den Startmenü-Ordner kopieren. Dadurch erscheint sie in der App-Liste und in der Suche:
- Drücken Sie Windows-Taste + R.
- Geben Sie danach shell:programs ein und bestätigen Sie.
- Kopieren Sie anschließend die Verknüpfung in den geöffneten Ordner.
PowerShell-Skript beim Windows-Start automatisch ausführen
Soll das Skript bei jeder Anmeldung laufen, hilft der Autostart-Ordner.
- Drücken Sie Windows-Taste + R.
- Geben Sie anschließend shell:startup ein und bestätigen Sie.
- Kopieren Sie danach die fertige Verknüpfung in diesen Ordner.
Ab der nächsten Anmeldung startet das Skript somit automatisch. Für alle Benutzer des PCs nutzen Sie stattdessen shell:common startup.
Beachten Sie jedoch eine Einschränkung. Verknüpfungen mit der Option „Als Administrator ausführen“ starten aus dem Autostart-Ordner meist nicht zuverlässig. In diesem Fall ist daher die Aufgabenplanung mit dem Trigger „Bei Anmeldung“ die bessere Wahl.
Verknüpfung per PowerShell automatisch erstellen
Wer Verknüpfungen auf mehreren PCs benötigt, erstellt sie am besten per Skript. Dafür dient das COM-Objekt WScript.Shell.
$desktop = [Environment]::GetFolderPath('Desktop')
$shell = New-Object -ComObject WScript.Shell
$lnk = $shell.CreateShortcut("$desktop\Backup starten.lnk")
$lnk.TargetPath = "powershell.exe"
$lnk.Arguments = '-NoProfile -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"'
$lnk.WorkingDirectory = "C:\Skripte"
$lnk.IconLocation = "$env:SystemRoot\System32\imageres.dll,109"
$lnk.Hotkey = "CTRL+ALT+B"
$lnk.WindowStyle = 7
$lnk.Description = "Startet das Backup-Skript"
$lnk.Save()
Die einzelnen Eigenschaften bedeuten dabei Folgendes:
- TargetPath: das Programm, also powershell.exe oder pwsh.exe
- Arguments: alle Parameter einschließlich Skriptpfad
- WorkingDirectory: entspricht dem Feld „Ausführen in“
- IconLocation: Symboldatei und Index
- Hotkey: die Tastenkombination
- WindowStyle: 1 für normal, 3 für maximiert und 7 für minimiert
Der Desktop-Pfad wird hier bewusst über GetFolderPath ermittelt. Dadurch funktioniert das Skript auch dann, wenn der Desktop in OneDrive liegt.
Die Option „Als Administrator ausführen“ per Skript setzen
Das COM-Objekt kennt leider keine Eigenschaft für Administratorrechte. Dennoch lässt sich die Option setzen, und zwar über ein Byte in der LNK-Datei:
$pfad = "$desktop\Backup starten.lnk"
$bytes = [System.IO.File]::ReadAllBytes($pfad)
$bytes[0x15] = $bytes[0x15] -bor 0x20
[System.IO.File]::WriteAllBytes($pfad, $bytes)
Anschließend ist der Haken bei „Als Administrator ausführen“ aktiv. Prüfen Sie das Ergebnis jedoch einmal in den Eigenschaften.
Alternativen zur klassischen Verknüpfung
Neben der LNK-Datei gibt es weitere Wege. Je nach Einsatzzweck sind diese sogar praktischer.
Batch-Datei als Starter
Eine CMD-Datei im selben Ordner wie das Skript ist besonders portabel. Sie funktioniert nämlich auch auf einem USB-Stick oder Netzlaufwerk.
- Öffnen Sie den Editor.
- Fügen Sie anschließend diesen Inhalt ein:
@echo off
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0Backup.ps1" %*
- Speichern Sie die Datei danach als Backup.cmd im Skriptordner.
Der Platzhalter %~dp0 steht dabei für den Ordner der Batch-Datei. Zudem reicht %* alle Argumente an das Skript weiter. Dadurch bleibt die Lösung unabhängig vom Laufwerksbuchstaben.
Windows Terminal verwenden
Unter Windows 11 ist das Windows Terminal bereits vorinstalliert. Unter Windows 10 lässt es sich hingegen über den Microsoft Store nachrüsten. Eine Verknüpfung mit Terminal sieht zum Beispiel so aus:
wt.exe powershell.exe -NoExit -ExecutionPolicy Bypass -File "C:\Skripte\Backup.ps1"
Dadurch öffnet sich das Skript in einem modernen Tab. Das ist vor allem bei Skripten mit viel Ausgabe angenehm.
Skript in eine EXE-Datei umwandeln
Zusätzlich gibt es das Modul PS2EXE. Es verpackt ein Skript in eine ausführbare Datei.
- Öffnen Sie die PowerShell.
- Installieren Sie anschließend das Modul:
Install-Module ps2exe -Scope CurrentUser
- Wandeln Sie danach das Skript um:
Invoke-PS2EXE "C:\Skripte\Backup.ps1" "C:\Skripte\Backup.exe"
Die EXE-Datei startet dann per Doppelklick. Allerdings stufen manche Virenscanner solche Dateien als verdächtig ein. Deshalb eignet sich dieser Weg eher für den eigenen PC.
PowerShell-Skript unter macOS und Linux per Doppelklick starten
PowerShell 7 läuft außerdem unter macOS und Linux. Dort gibt es zwar keine LNK-Dateien, jedoch vergleichbare Lösungen.
Linux: Starter als .desktop-Datei
- Erstellen Sie eine Datei namens backup.desktop auf dem Schreibtisch.
- Fügen Sie anschließend diesen Inhalt ein:
[Desktop Entry]
Type=Application
Name=Backup starten
Exec=pwsh -NoProfile -File /home/benutzer/skripte/backup.ps1
Terminal=true
- Machen Sie die Datei danach ausführbar:
chmod +x ~/Schreibtisch/backup.desktop
- Je nach Desktop-Umgebung wählen Sie zusätzlich per Rechtsklick „Starten erlauben“.
macOS: Starter als .command-Datei
- Öffnen Sie TextEdit und wechseln Sie über „Format“ > „In reinen Text umwandeln“.
- Fügen Sie anschließend diese Zeilen ein:
#!/bin/zsh
pwsh -NoProfile -File ~/Skripte/backup.ps1
- Speichern Sie die Datei danach als Backup.command.
- Öffnen Sie dann das Terminal und machen Sie die Datei ausführbar:
chmod +x ~/Desktop/Backup.command
Ein Doppelklick startet das Skript nun im Terminal. Die Ausführungsrichtlinie spielt auf diesen Systemen übrigens keine Rolle. Deshalb entfällt dort der Parameter „-ExecutionPolicy“.
Typische Fehler und ihre Lösungen
Trotz korrekter Verknüpfung klappt der Start nicht immer sofort. Die folgenden Probleme treten dabei besonders häufig auf.
Das Fenster schließt sich sofort
Das Skript ist entweder fertig oder mit einem Fehler abgebrochen. Zur Kontrolle ergänzen Sie daher vorübergehend -NoExit im Ziel. Alternativ fügen Sie am Skriptende diese Zeile ein:
Read-Host "Weiter mit Enter"
Meldung: Ausführung von Skripts ist deaktiviert
Hier fehlt meist der Parameter -ExecutionPolicy Bypass. Prüfen Sie außerdem, ob er vor -File steht.
Bleibt der Fehler bestehen, ist vermutlich eine Gruppenrichtlinie aktiv. Diese hat nämlich Vorrang vor dem Parameter. Das erkennen Sie an Einträgen bei „MachinePolicy“ oder „UserPolicy“ in der Ausgabe von Get-ExecutionPolicy -List. In diesem Fall hilft folglich nur der Administrator oder ein signiertes Skript.
Das Skript wird nicht gefunden
Meist liegt es an Leerzeichen im Pfad. Setzen Sie den gesamten Pfad deshalb in doppelte Anführungszeichen. Kontrollieren Sie zudem, ob typografische Anführungszeichen hineinkopiert wurden. Die PowerShell benötigt hier nämlich die geraden Zeichen der Tastatur.
Relative Pfade funktionieren nicht
Dann stimmt das Arbeitsverzeichnis nicht. Tragen Sie daher den Skriptordner bei „Ausführen in“ ein. Besser ist allerdings $PSScriptRoot im Skript:
$konfig = Join-Path $PSScriptRoot "config.json"
Das ist vor allem bei Administratorrechten wichtig. Erhöhte Prozesse starten nämlich oft in C:\Windows\System32.
Sicherheitswarnung bei heruntergeladenen Skripten
Windows markiert Dateien aus dem Internet. Dadurch erscheint eine Warnung, oder das Skript wird blockiert. Wenn Sie der Quelle vertrauen, heben Sie die Markierung so auf:
Unblock-File -Path "C:\Skripte\Backup.ps1"
Netzlaufwerke fehlen im Administrator-Modus
Verbundene Laufwerke wie Z: gelten nur für die normale Sitzung. Im erhöhten Modus sind sie deshalb oft nicht sichtbar. Verwenden Sie stattdessen UNC-Pfade wie \Server\Freigabe\Ordner.
Umlaute werden falsch dargestellt
Windows PowerShell 5.1 liest Skripte ohne Kennung als ANSI. Speichern Sie die Datei daher als „UTF-8 mit BOM“. Im Windows-Editor wählen Sie dazu „Speichern unter“ und anschließend die passende Codierung. PowerShell 7 kommt dagegen auch mit UTF-8 ohne BOM zurecht.
Die falsche PowerShell-Version startet
Prüfen Sie zunächst, ob im Ziel powershell.exe oder pwsh.exe steht. Zur Kontrolle geben Sie außerdem im Skript die Version aus:
Write-Host $PSVersionTable.PSVersion
Sicherheit beim Start per Verknüpfung
Eine Verknüpfung mit „Bypass“ ist bequem. Dennoch sollten Sie einige Regeln beachten.
- Nur vertrauenswürdige Skripte starten: Lesen Sie fremde Skripte zunächst im Editor. Der Parameter „Bypass“ schaltet schließlich eine Schutzschicht ab.
- Schreibrechte einschränken: Liegt das Skript in einem Ordner, den jeder ändern darf, kann es manipuliert werden. Das ist besonders bei Administratorrechten kritisch. Legen Sie solche Skripte deshalb zum Beispiel unter C:\Program Files\Skripte ab.
- Keine Kennwörter im Klartext: Speichern Sie Zugangsdaten nicht im Skript und ebenso wenig im Ziel-Feld. Nutzen Sie stattdessen das Modul Microsoft.PowerShell.SecretManagement oder Get-Credential.
- Fremde LNK-Dateien prüfen: Verknüpfungen aus E-Mails oder Downloads können beliebige Befehle enthalten. Kontrollieren Sie daher vor dem Start das Ziel in den Eigenschaften.
- Skripte signieren: In Firmen ist die Richtlinie „AllSigned“ verbreitet. Dann signieren Sie Ihr Skript mit einem Codesignatur-Zertifikat:
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
Set-AuthenticodeSignature -FilePath "C:\Skripte\Backup.ps1" -Certificate $cert
Danach benötigt die Verknüpfung den Parameter „-ExecutionPolicy Bypass“ nicht mehr.
Häufige Fragen zur PowerShell-Verknüpfung
Wie lautet das richtige Ziel für eine PowerShell-Verknüpfung?
Das Ziel besteht aus der Programmdatei, den Optionen und dem Skriptpfad. Eine bewährte Zeile lautet zum Beispiel: powershell.exe -NoProfile -ExecutionPolicy Bypass -File „C:\Skripte\Backup.ps1“. Für PowerShell 7 ersetzen Sie außerdem powershell.exe durch pwsh.exe.
Kann eine PS1-Datei direkt per Doppelklick gestartet werden?
Standardmäßig öffnet der Doppelklick nur den Editor. Zwar ließe sich die Dateizuordnung ändern, jedoch sinkt dadurch die Sicherheit. Eine Verknüpfung oder eine Batch-Datei ist deshalb der bessere Weg.
Wie bleibt das PowerShell-Fenster nach dem Skript offen?
Ergänzen Sie im Ziel den Parameter -NoExit vor „-File“. Alternativ setzen Sie Read-Host „Weiter mit Enter“ an das Ende des Skripts. Dadurch lassen sich Ausgaben und Fehlermeldungen in Ruhe lesen.
Wie starte ich das Skript immer als Administrator?
Öffnen Sie die Eigenschaften der Verknüpfung und klicken Sie auf „Erweitert“. Aktivieren Sie anschließend „Als Administrator ausführen“. Ohne UAC-Abfrage gelingt es hingegen über eine Aufgabe in der Aufgabenplanung mit höchsten Privilegien.
Lässt sich die Verknüpfung an die Taskleiste anheften?
Ja, das funktioniert unter Windows 11/10. Die Verknüpfung zeigt nämlich auf powershell.exe und somit auf ein Programm. Unter Windows 11 finden Sie den Eintrag allerdings unter „Weitere Optionen anzeigen“.
Ist „-ExecutionPolicy Bypass“ gefährlich?
Der Parameter gilt nur für den jeweiligen Start. Die Systemeinstellung bleibt dadurch unverändert. Dennoch sollten Sie ihn ausschließlich für Skripte nutzen, deren Inhalt Sie kennen.
Warum funktioniert meine Tastenkombination nicht?
Die Tastenkombination wirkt nur bei Verknüpfungen auf dem Desktop oder im Startmenü. Außerdem darf sie nicht von einem anderen Programm belegt sein. Nach dem Verschieben der Verknüpfung müssen Sie die Kombination zudem oft neu eintragen.
Wie starte ich ein Skript komplett ohne sichtbares Fenster?
Der Parameter -WindowStyle Hidden lässt das Fenster kurz aufblitzen. Wirklich unsichtbar läuft das Skript dagegen über conhost.exe –headless oder über die Aufgabenplanung. Dort wählen Sie dafür „Unabhängig von der Benutzeranmeldung ausführen“.
Kann ich mehrere Skripte mit einer Verknüpfung starten?
Ja, dafür eignet sich der Parameter -Command. Tragen Sie zum Beispiel ein: powershell.exe -NoProfile -ExecutionPolicy Bypass -Command „& ‚C:\Skripte\Eins.ps1‘; & ‚C:\Skripte\Zwei.ps1′“. Die Skripte laufen dann nacheinander ab.
Fazit
Eine Verknüpfung ist der einfachste Weg, ein PowerShell-Skript per Doppelklick zu starten. Entscheidend ist dabei das Ziel mit powershell.exe oder pwsh.exe, den passenden Parametern und dem Skriptpfad in Anführungszeichen.
Zusätzlich lassen sich Administratorrechte, Fensterstil, Symbol und Tastenkombination festlegen. Achten Sie jedoch stets auf vertrauenswürdige Skripte und geschützte Ordner. Dadurch bleibt die Automatisierung sowohl bequem als auch sicher.
