Problem kurz erklärt
Wenn du in der Aufgabenplanung direkt "powershell.exe -ExecutionPolicy Bypass -File C:\Pfad\script.ps1" einträgst,
läuft das Skript oft nicht als Administrator oder ExecutionPolicy wird ignoriert,
weil:
- Aufgabenplanung standardmäßig ohne erhöhte Rechte ausführt.
- PowerShell-Einstellungen per GPO / System Policy die Bypass-Option blockieren können.
Lösung: PowerShell über cmd.exe mit Adminrechten starten
1. Variante: Aufgabe mit „höchsten Privilegien“ erstellen
- Öffne Aufgabenplanung → Aufgabe erstellen (nicht: einfache Aufgabe)
- Im Reiter Allgemein:
- Haken bei „Mit höchsten Privilegien ausführen“
- Benutzerkonto: z. B.
Administratoroder ein Service-Konto mit lokalen Adminrechten
- Im Reiter Aktionen:
Programm/Skript:
cmd.exeArgumente hinzufügen (optional):
/c powershell.exe -ExecutionPolicy Bypass -File "C:\USV\shutdown_unattended.ps1"Starten in (optional):
C:\USV
Damit führt Task Scheduler cmd aus, das wiederum PowerShell startet – jetzt mit Administratorrechten und korrekt gesetztem Bypass.
2. Variante: Als SYSTEM-Account ausführen (z. B. für Server-Shutdowns)
Wenn du z. B. auf einem USV-gesteuerten Server Skripte brauchst, die Dienste herunterfahren oder VMs stoppen, kannst du sie auch als SYSTEM laufen lassen:
schtasks /create /tn "USV_Shutdown" /tr "cmd.exe /c powershell.exe -ExecutionPolicy Bypass -File C:\USV\shutdown_unattended.ps1" /ru SYSTEM /sc onstart
Damit läuft das Skript beim Start oder Trigger direkt unter NT AUTHORITY\SYSTEM — mit vollen Rechten, unabhängig von Benutzer-UAC.
3. Wenn Bypass wirklich ignoriert wird
Dann zwinge PowerShell mit Unrestricted oder RemoteSigned, z. B.:
cmd.exe /c powershell.exe -ExecutionPolicy Unrestricted -NoProfile -File "C:\USV\shutdown_unattended.ps1"
Oder verwende den vollständigen Pfad:
cmd.exe /c "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -NoProfile -File "C:\USV\shutdown_unattended.ps1"
Log-Datei anlegen für Fehlersuche
Damit du siehst, was wirklich passiert:
cmd.exe /c powershell.exe -ExecutionPolicy Bypass -NoProfile -File "C:\USV\shutdown_unattended.ps1" >> "C:\USV\log.txt" 2>&1
Dann kannst du C:\USV\log.txt prüfen, ob PowerShell wirklich ausgeführt wurde.
0 Kommentare
Fügen Sie Ihren Kommentar hinzu