Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Energieoptionen per PowerShell ändern

Mitglied: Stefan007

Stefan007 (Level 2) - Jetzt verbinden

12.10.2017 um 12:51 Uhr, 5967 Aufrufe, 18 Kommentare, 6 Danke

Hi,

gibt es eine Möglichkeit um per Scripte zwischen höchsten Energiesparoptionen und maximaler Leistung per Knopfdruck zu wechseln?
Falls es zum jeweiligen OS Unterschiede dabei gibt, dann soll sich die Frage nur auf Windows 10 Pro beziehen.

Gruß,

Stefan


Mitglied: 134464
12.10.2017, aktualisiert um 13:04 Uhr
Bitte warten ..
Mitglied: MrCount
LÖSUNG 12.10.2017 um 13:06 Uhr
Servus,

hier mal ein Beispiel, wie man diverse Settings macht:
01.
@echo off
02.
CHCP 1252
03.

04.
:: unplugged
05.
set "u_monitor=10"
06.
set "u_standby=15"
07.
set "u_hibernate=0"
08.

09.
:: plugged in
10.
set "p_monitor=0"
11.
set "p_standby=0"
12.
set "p_hibernate=0"
13.

14.
REM (Höchstleistung)
15.
powercfg -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
16.

17.
REM (Ausbalanciert)
18.
REM powercfg -SETACTIVE 381b4222-f694-41f0-9685-ff5bb260df2e
19.

20.
REM (Energiesparmodus)
21.
REM powercfg -SETACTIVE a1841308-3541-4fab-bc81-f71556f20b4a
22.

23.
::Set the unplugged settings
24.
powercfg.exe -change -monitor-timeout-dc %u_monitor%
25.
powercfg.exe -change -standby-timeout-dc %u_standby%
26.
powercfg.exe -change -hibernate-timeout-dc %u_hibernate%
27.

28.
::Set the plugged in settings
29.
powercfg.exe -change -monitor-timeout-ac %p_monitor%
30.
powercfg.exe -change -standby-timeout-ac %p_standby%
31.
powercfg.exe -change -hibernate-timeout-ac %p_hibernate%
In Zeile 15 wird das Schema gesetzt...
Bitte warten ..
Mitglied: rubberman
12.10.2017 um 13:08 Uhr
01.
@echo off &setlocal DisableDelayedExpansion
02.

03.
:: Alle Energiesparpläne mit Name und GUID, sowie Index des aktiven Energiesparplans speichern
04.
set "n="
05.
for /f "tokens=1,2* delims=:" %%g in (
06.
  'powercfg -list^|findstr /rc:": [0-9a-f][0-9a-f]*-[0-9a-f][0-9a-f]*-[0-9a-f][0-9a-f]*-[0-9a-f][0-9a-f]*-[0-9a-f][0-9a-f]* "^|findstr /n .'
07.
) do for /f "tokens=1*" %%j in ("%%i") do for /f "tokens=1* delims=()" %%l in ("%%k") do (
08.
  set /a "n=%%g"
09.
  set "guid%%g=%%j"
10.
  set "name%%g=%%l"
11.
  if "%%m" neq "" set "active=%%g"
12.
)
13.
if not defined n exit /b
14.

15.
:: Gefundene Energiesparpläne zur Auswahl stellen
16.
setlocal EnableDelayedExpansion
17.
for /l %%i in (1 1 %n%) do (
18.
  <nul set /p =%%i - "!name%%i!"
19.
  if %%i equ %active% (echo  ^(AKTIV^)) else echo(
20.
)
21.
echo ~~~~~~~~~~~~~~
22.

23.
:: Eingabeaufforderung und eingegebenen Wert prüfen
24.
:input_loop
25.
set "idx=_"
26.
set /p "idx=Neues Energieschema: "
27.
call :check idx 1 %n% || goto input_loop
28.

29.
:: Ausgewählten Energiesparplan aktivieren und Scriptausführung beenden
30.
powercfg -setactive !guid%idx%!
31.
exit /b
32.

33.

34.
:: Subroutine für die Prüfung des eingegebenen Werts
35.
:check VarName Min Max
36.
setlocal EnableDelayedExpansion
37.
for /f "delims=1234567890 eol=" %%i in ("!%~1!") do (endlocal &exit /b 1)
38.
2>nul set /a "dummy=!%~1!" || (endlocal &exit /b 1)
39.
if "!%~1!" neq "%dummy%" (endlocal &exit /b 1)
40.
if %dummy% lss %~2 (endlocal &exit /b 1)
41.
if %dummy% gtr %~3 (endlocal &exit /b 1)
42.
endlocal &exit /b 0
Maybe
Ist allerdings auch nur Batch und nicht Powershell.

Grüße
Steffen
Bitte warten ..
Mitglied: 134464
12.10.2017 um 13:26 Uhr
powercfg lässt sich ja problemlos auch in der powershell Konsole verwenden.
Bitte warten ..
Mitglied: rubberman
13.10.2017 um 08:40 Uhr
Joa kann man, hatte ich aber nicht parat.
Versuch:
01.
# Alle Energiesparpläne als Matches-Array speichern
02.
$matches_arr = (powercfg -l) |
03.
  Select-String -Pattern "^.+ ([0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12})\s+\((.+)\)\s*(\**)$" |
04.
  %{$_.Matches}
05.

06.
# Gefundene Energiesparpläne zur Auswahl stellen
07.
for ($i=0; $i -lt $matches_arr.Length; $i++) {
08.
  Write-Host ($i + 1) - `"$($matches_arr[$i].Groups[3].Value)`" $(If ($matches_arr[$i].Groups[4].Value -eq "*") {"(AKTIV)"})
09.
}
10.
"~~~~~~~~~~~~~~"
11.

12.
# Eingabeaufforderung und eingegebenen Wert prüfen
13.
do {
14.
  try {
15.
    $idx = [int]$(Read-Host -Prompt "Neues Energieschema")
16.
  }
17.
  catch {}
18.
} until ($idx -gt 0 -and $idx -le $matches_arr.Length)
19.

20.
# Ausgewählten Energiesparplan aktivieren
21.
powercfg -setactive $matches_arr[$idx - 1].Groups[1].Value
Grüße
Steffen
Bitte warten ..
Mitglied: Stefan007
14.10.2017 um 13:24 Uhr
Zitat von MrCount:

Servus,

hier mal ein Beispiel, wie man diverse Settings macht:
01.
@echo off
02.
> CHCP 1252
03.
> 
04.
> :: unplugged
05.
> set "u_monitor=10"
06.
> set "u_standby=15"
07.
> set "u_hibernate=0"
08.
> 
09.
> :: plugged in
10.
> set "p_monitor=0"
11.
> set "p_standby=0"
12.
> set "p_hibernate=0"
13.
> 
14.
> REM (Höchstleistung)
15.
> powercfg -SETACTIVE 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
16.
> 
17.
> REM (Ausbalanciert)
18.
> REM powercfg -SETACTIVE 381b4222-f694-41f0-9685-ff5bb260df2e
19.
> 
20.
> REM (Energiesparmodus)
21.
> REM powercfg -SETACTIVE a1841308-3541-4fab-bc81-f71556f20b4a
22.
> 
23.
> ::Set the unplugged settings
24.
> powercfg.exe -change -monitor-timeout-dc %u_monitor%
25.
> powercfg.exe -change -standby-timeout-dc %u_standby%
26.
> powercfg.exe -change -hibernate-timeout-dc %u_hibernate%
27.
> 
28.
> ::Set the plugged in settings
29.
> powercfg.exe -change -monitor-timeout-ac %p_monitor%
30.
> powercfg.exe -change -standby-timeout-ac %p_standby%
31.
> powercfg.exe -change -hibernate-timeout-ac %p_hibernate%
32.
> 
In Zeile 15 wird das Schema gesetzt...

-> sind das nur Copy and Paste Fehler in Zeile 18 und 21? ^^ Ansonsten ist es genau das was ich wollte, vielen Dank dafür!
Bitte warten ..
Mitglied: rubberman
14.10.2017 um 13:36 Uhr
Was meinst du denn mit Copy and Paste Fehler? Ggf. weichen die GUIDs auf deinem Rechner ab. Darum würde es eigentlich Sinn machen die Ausgabe von POWERCFG - L zu verarbeiten, wie oben gezeigt.

Grüße
rubberman
Bitte warten ..
Mitglied: Stefan007
14.10.2017 um 13:43 Uhr
wenn ich das rem aus Zeile 18 und 21 entferne dann geht es.
Bitte warten ..
Mitglied: rubberman
14.10.2017 um 13:46 Uhr
REM steht für Remark und macht eine Zeile zum Kommentar. Dir ist klar dass der Code dir nur Beispielaufrufe zeigt? Wenn du einen der Energiesparpläne nutzen willst musst du genau bei diesem das REM entfernen und bei den anderen setzen.

Steffen
Bitte warten ..
Mitglied: rubberman
LÖSUNG 14.10.2017, aktualisiert um 16:02 Uhr
OK, um die Verwirrung mal zu beenden ...
Wenn du die beiden GUIDs kennst, zwischen denen du wechseln willst (und falls nicht führe POWERCFG -L in einem Konsolefenster aus), dann ist das doch relativ simpel.
01.
@echo off &setlocal
02.
:: Die beiden GUIDs zwischen denen gewechselt wird
03.
set "high=8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
04.
set "low=a1841308-3541-4fab-bc81-f71556f20b4a"
05.
:: Prüfen, welches Schema aktiv ist und das jeweils andere aktivieren
06.
powercfg -l|>nul findstr /e "%high%.*\*"&&(powercfg -setactive %low%)||(powercfg -setactive %high%)
07.
:: Kontrollausgabe
08.
for /f "tokens=2 delims=()" %%i in ('powercfg -l^|findstr /e "\*"') do echo Aktiviert: %%i&>nul timeout 2
Wenn du die Kontrollausgabe nicht brauchst, schmeißt du sie einfach raus.
Und ... natürlich kannst du vorher deine eigenen Energiesparpläne anlegen und nach deinen Vorstellungen konfigurieren.

Steffen
Bitte warten ..
Mitglied: MrCount
16.10.2017 um 07:43 Uhr
Wie @rubberman schon richtig erwähnt hat, sind die Zeilen "auskommentiert".
REM steht für Remark und macht eine Zeile zum Kommentar.

Der Code diente auch nur als Beispiel. Daraus kannst du, wie von rubberman ja schon getan, dir dein Script zusammenstellen.
Bitte warten ..
Mitglied: nikmaier
02.12.2018 um 10:01 Uhr
Hallo rubberman,
ich finde die Batch perfekt, gibt es eine Möglichkeit einen bestimmten Energiesparplan der immer den gleichen Namen hat fest auszuwählen ohne Auswahl?
Hintergrund ist der, dass ich bei einigen Rechnern das Schema "Ultimate Power" aktiviere, nur dann hat dies immer eine andere GUID, somit kann ich das nicht festlegen.
Es müsste quasi die GUID ausgelesen werden und dann die GUID mit dem Namen "Ultimate Power" fest aktiviert werden.

Weißt du wie ich das machen könnte?

Danke im Voraus.
Bitte warten ..
Mitglied: 137846
02.12.2018, aktualisiert um 11:21 Uhr
Zitat von nikmaier:
Es müsste quasi die GUID ausgelesen werden und dann die GUID mit dem Namen "Ultimate Power" fest aktiviert werden.
Für die Ausführung innerhalb einer Batch:
01.
for /f "tokens=4" %%a in ('powercfg -l ^| findstr /ilc:"Ultimate Power"') do powercfg -setactive %%a
Für's Ausprobieren in der Konsole müssen die doppelten Prozentzeichen durch einfache ersetzt werden.

Schönen 1. Advent
Gruß A.
Bitte warten ..
Mitglied: nikmaier
02.12.2018 um 13:38 Uhr
Klasse, so schnell hätte ich jetzt nicht mit einer Antwort gerechnet

Funktioniert perfekt, vielen Dank!

Und ebenfalls einen schönen 1. Advent.
Bitte warten ..
Mitglied: nikmaier
03.12.2018 um 14:14 Uhr
Hallo,
jetzt hätte ich doch noch etwas, was ich leider nicht hinbekomme.

Es soll via Batch geschaut werden ob es einen Eintrag bei "powercfg -l" gibt der "Ultimative Leistung" heißt, das wird ja mit dem Tip von answer gemacht:

for /f "tokens=4" %%a in ('powercfg -l ^| findstr /ilc:"Ultimate Power"') do powercfg -setactive %%a

Nun soll folgendes passieren:

Wenn es den Eintrag schon gibt, dann soll dieser aktiviert werden "powercfg -setactive %%a)
wenn es den Eintrag aber nicht gibt, dann soll er erstellt werden mit "powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61" und danach soll dieser aktiv gesetzt werden "for /f "tokens=4" %%a in ('powercfg -l ^| findstr /ilc:"Ultimate Power"') do powercfg -setactive %%a".

Ich es müsste jetzt bestimmt nur richtig zusammen gesetzt werden, aber ich hab jetzt vielen probiert, aber ich bekomm es nicht hin.

Vielleicht kann mir hier noch jemand auf die Sprünge helfen

Schonmal vielen Dank im Voraus.
Bitte warten ..
Mitglied: 137846
03.12.2018, aktualisiert um 14:45 Uhr
Dir ist schon klar das du hier einen fremden Thread für deine Zwecke übernimmst?!
https://administrator.de/aboutus/rules.php#toc-2

Und wie man prüfen kann ob es einen Eintrag gibt steht in Rubbermans Thread mit findstr schon fix und fertig drin, brauchst du also nur zusammensetzen.
Bitte warten ..
Mitglied: nikmaier
03.12.2018, aktualisiert um 14:49 Uhr
Ok, sorry, ich dachte das ist in Ordnung, da es ja um das selbe Thema geht und es vielleicht für den ein oder anderen interessant ist falls er diesen Thread liest.
Dann such ich mal nach dem Thema von Rubberman.

Trotzdem danke.
Bitte warten ..
Mitglied: Stefan007
03.12.2018 um 14:52 Uhr
Frechheit
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Drag and Drop in Powershell
gelöst Frage von mc-doubleyouBatch & Shell2 Kommentare

Hallo zusammen, inwischen habe ich mich von cmd zur Powershell vorgearbeitet, die Lösungen die mir Google aber so liefert ...

Entwicklung

Powershell Old Files and Folders Deletion after x days

gelöst Frage von easy4breezyEntwicklung4 Kommentare

Hallo :) Auf einem meiner Laufwerke möchte ich alte Ordner und Dateien automatisiert löschen. Die Verzeichnisstruktur ist folgende: Laufwerk ...

Windows Server

Manage open files and sessions

gelöst Frage von thatsrightWindows Server10 Kommentare

Hola liebe Gemeinde, Ich hab mal ne frage Habe neu einen Filserver 2012r2, jetzt wollte/musste/sollte ich ein File schliesen, ...

Windows Userverwaltung

Identity and Access Management Programme

Frage von PulliWindows Userverwaltung1 Kommentar

Hallo, sind auf der Suche nach einem Marktführenden Produkt für Identity & Access Management. Folgendes Szenario möchten wir abbilden. ...

Neue Wissensbeiträge
Windows 10
Die tickende DSGVO-Zeitbombe von Microsoft
Information von Frank vor 21 StundenWindows 1014 Kommentare

Hier ein guter Beitrag von Golem.de zum Thema DSGVO und das Windows 10 aktuell nicht DSGVO konform ist! Das ...

Microsoft Office

Gebrandete OEM-Version von Office 2003 auf Nachfolgerechner installieren

Tipp von Lochkartenstanzer vor 22 StundenMicrosoft Office

Hallo Kollegen, gerade mal wieder ein Kundensystem mit Widows 10 in den Fingern gehabt, bei dem der Besitzer sein ...

Windows Server

Ein Feature, welches einem das Arbeiten mit Windows-2019-Coreservern erleichtern kann

Information von DerWoWusste vor 23 StundenWindows Server3 Kommentare

Man kann mittels Kommando nun folgendes auf Server 2019 in der Coreversion v1809 freischalten, so dass man es lokal ...

Windows 10
MS möchte offenbar lokale Konten abschaffen
Information von UweGri vor 1 TagWindows 1012 Kommentare

Guten Tag Admins, ab und an lese ich bei Dr.-Windows Bei dieser Meldung dachte ich, wird MS jetzt offen ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Acht Switches miteinander verbinden
Frage von nixwissenderNetzwerkmanagement28 Kommentare

hallo! im unternehmen sind acht switches (vier zyxel gs1920-24 und vier levelone gsw-2457) vorhanden. aktuell sind diese in sternform, ...

Erkennung und -Abwehr
MS-Hotline-Telefonterror
Frage von HenereErkennung und -Abwehr24 Kommentare

Servus zusammen, seit ca 3 Wochen haben wir immer wieder Anrufe von unbekannten Nummern, teils aus dem Ausland. Nach ...

Batch & Shell
Active Directory Picker - Get-ADGroup kann nicht in den Typ konvertiert werden
Frage von dispatcherBatch & Shell17 Kommentare

Mahlzeit zusammen, Im folgenden Skript erhalte ich immer die Meldung: Get-ADGroup : "System.Object " kann nicht in den Typ "Microsoft.ActiveDirectory.Management.ADGroup" ...

Windows 10
Die tickende DSGVO-Zeitbombe von Microsoft
Information von FrankWindows 1013 Kommentare

Hier ein guter Beitrag von Golem.de zum Thema DSGVO und das Windows 10 aktuell nicht DSGVO konform ist! Das ...