Windows Kommandozeile - Set Power State
Hi,
wie kann man unter Windows per Kommandozeile (auch PowerShell) den Energiezustand des Computers setzen?
z.B. mit
kann man sofort in den Sleep Modus wechseln.
Ich will aber nur den Power State wechseln, z.B. Mode 2 - Power Save - Low Power Mode.
Angeblich soll man das mit der Methode SetPowerState der CIM-KLasse CIM_ComputerSystem machen können, aber unter Win11 Pro wird mir gemeldet, dass diese Methode unbekannt wäre. Auch über Win32_ComputerSystem oder CIM_UnitaryComputerSystem geht das nicht.
Wie kann ich das mit Bordmitteln bewerkstelligen?
Anmerkung:
Ich will nicht das Power Schema ändern! (Energiesparplan)
E.
wie kann man unter Windows per Kommandozeile (auch PowerShell) den Energiezustand des Computers setzen?
z.B. mit
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
Ich will aber nur den Power State wechseln, z.B. Mode 2 - Power Save - Low Power Mode.
Angeblich soll man das mit der Methode SetPowerState der CIM-KLasse CIM_ComputerSystem machen können, aber unter Win11 Pro wird mir gemeldet, dass diese Methode unbekannt wäre. Auch über Win32_ComputerSystem oder CIM_UnitaryComputerSystem geht das nicht.
Wie kann ich das mit Bordmitteln bewerkstelligen?
Anmerkung:
Ich will nicht das Power Schema ändern! (Energiesparplan)
E.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3219748128
Url: https://administrator.de/forum/windows-kommandozeile-set-power-state-3219748128.html
Ausgedruckt am: 31.03.2025 um 14:03 Uhr
12 Kommentare
Neuester Kommentar
Servis @emeriks,
schau mal hier rein
https://github.com/AaronKelley/PowerMode
https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/cust ...
Dann kannst du per Powershell den Mode so mit der Powershell ändern
Zur Info: Das folgende ändert nicht den Energiesparplan!
Du kannst die aktuelle OverlayGUID auch per Code auslesen
Hoffe das war das was du suchst.
Grüße Uwe
schau mal hier rein
https://github.com/AaronKelley/PowerMode
https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/cust ...
Dann kannst du per Powershell den Mode so mit der Powershell ändern
Zur Info: Das folgende ändert nicht den Energiesparplan!
Add-Type -MemberDefinition '
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")] public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetEffectiveOverlayScheme")] public static extern uint PowerGetEffectiveOverlayScheme(out Guid EffectiveOverlayGuid);
' -Namespace win32 -Name power
# zu aktivierenden Modus auskommentieren (folgende GUIDs sind die Defaults, können sich aber je nach System unterscheiden => dann auslesen, Registry oder mit u.a. Methode)
# Better Battery mode (battery saver)
[win32.power]::PowerSetActiveOverlayScheme([GUID]"961cc777-2547-4f9d-8174-7d86181b8a7a")
# Better Performance mode
# [win32.power]::PowerSetActiveOverlayScheme([GUID]"3af9B8d9-7c97-431d-ad78-34a8bfea439f")
# Best performance mode (high performance mode)
# [win32.power]::PowerSetActiveOverlayScheme([GUID]"ded574b5-45a0-4f42-8737-46345c09c238")
Du kannst die aktuelle OverlayGUID auch per Code auslesen
Add-Type -MemberDefinition '
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")] public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetEffectiveOverlayScheme")] public static extern uint PowerGetEffectiveOverlayScheme(out Guid EffectiveOverlayGuid);
' -Namespace win32 -Name power
[guid]$currentOverlayGUID = [guid]::Empty
[win32.power]::PowerGetEffectiveOverlayScheme([ref]$currentOverlayGUID)
$currentOverlayGUID
Hoffe das war das was du suchst.
Grüße Uwe
Klappt hier im Test auf einem Windows 11 Notebook problemlos.
Bei
[win32.power]::PowerSetActiveOverlayScheme(....
liefert er einfach nur "0" und nichts passiert.
Der RückgabeCode der Funktion 0 bedeutet Erfolg. Weitere Ausgaben gibt es nicht. Du musst nur die richtig GUID verwenden bzw. auslesen wenn diese auf deinem System anders ist, s. Hinweise in den Links oben![win32.power]::PowerSetActiveOverlayScheme(....
liefert er einfach nur "0" und nichts passiert.
Moin
Unter Win11 funktionieren bei mir meistens die Sachen die Ich noch von W7 habe
Aber die Unterstützung Treiberseitig ist noch zickiger als unter W10 (Hybernate..)
Ich habe eine neue Verkünpfung erstellt wo Ich die Zeile als Ziel eingegeben habe.
Und ein entsprechendes Icon
Ruezustand:
C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState
Herunterfahren
C:\Windows\System32\shutdown.exe /s /t 10
Neustart
C:\Windows\System32\shutdown.exe /r /t 2
Abmelden
C:\Windows\System32\shutdown.exe /L /F
Standby
C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState Sleep
Unter Win11 funktionieren bei mir meistens die Sachen die Ich noch von W7 habe
Aber die Unterstützung Treiberseitig ist noch zickiger als unter W10 (Hybernate..)
Ich habe eine neue Verkünpfung erstellt wo Ich die Zeile als Ziel eingegeben habe.
Und ein entsprechendes Icon
Ruezustand:
C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState
Herunterfahren
C:\Windows\System32\shutdown.exe /s /t 10
Neustart
C:\Windows\System32\shutdown.exe /r /t 2
Abmelden
C:\Windows\System32\shutdown.exe /L /F
Standby
C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState Sleep
Wenn kein Overlay gesetzt ist ist das normal. Du musst den Slider mal mal manuell nach Links oder rechts ziehen, dann die GUID nochmal auslesen (Registry oder o.g. Funktion), diese kannst du dann beim Setzen mit PowerSetActiveOverlayScheme verwenden um das entsprechende Profil zu aktivieren.
Zitat von @emeriks:
Ich will nur, dass der Rechner in den Energiesparmodus wechselt, sodass er sofort wieder anspringt, wenn einer seiner Dienste über Netzwerk angesprochen wird. z.B. RDP, oder eine Freigabe. Ohne, dass man vorher ein Magic packet sendet muss (WOL).
Ich glaube wir sprechen hier von zwei unterschiedlichen Dingen, meine Info oben setzt den Powerzustand des Prozessors, der PC wechselt hierbei also nicht in einen Standbymodus!Ich will nur, dass der Rechner in den Energiesparmodus wechselt, sodass er sofort wieder anspringt, wenn einer seiner Dienste über Netzwerk angesprochen wird. z.B. RDP, oder eine Freigabe. Ohne, dass man vorher ein Magic packet sendet muss (WOL).
Für Suspend mit Wakeup-Events geht z.B. folgendes
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $false)
wenn einer seiner Dienste über Netzwerk angesprochen wird. z.B. RDP, oder eine Freigabe
Das muss in den NIC Einstellungen aber auch aktiviert sein.
Öhm , das zum Thema gepostete Links lesen
. Ich bin jetzt raus...
Wenn ich das wüsste
?!