terraXaler

PowerShell über cmd.exe mit Adminrechten starten (Wenn Bypass wirklich ignoriert wird)

Zuletzt am aktualisiert

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

  1. Öffne Aufgabenplanung → Aufgabe erstellen (nicht: einfache Aufgabe)
     
  2. Im Reiter Allgemein:
    • Haken bei „Mit höchsten Privilegien ausführen“
    • Benutzerkonto: z. B. Administrator oder ein Service-Konto mit lokalen Adminrechten
       
  3. Im Reiter Aktionen:
    • Programm/Skript:

      cmd.exe

    • Argumente 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

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Brauchst du weitere Hilfe? Kontaktiere uns!