-
-
Save raspi/203aef3694e34fefebf772c78c37ec2c to your computer and use it in GitHub Desktop.
# List all possible power config GUIDs in Windows | |
# Run: this-script.ps1 | Out-File powercfg.ps1 | |
# Then edit and run powercfg.ps1 | |
# (c) Pekka "raspi" Järvinen 2017 | |
$powerSettingTable = Get-WmiObject -Namespace root\cimv2\power -Class Win32_PowerSetting | |
$powerSettingInSubgroubTable = Get-WmiObject -Namespace root\cimv2\power -Class Win32_PowerSettingInSubgroup | |
Get-WmiObject -Namespace root\cimv2\power -Class Win32_PowerSettingCapabilities | ForEach-Object { | |
$tmp = $_.ManagedElement | |
$tmp = $tmp.Remove(0, $tmp.LastIndexOf('{') + 1) | |
$tmp = $tmp.Remove($tmp.LastIndexOf('}')) | |
$guid = $tmp | |
$s = ($powerSettingInSubgroubTable | Where-Object PartComponent -Match "$guid") | |
if (!$s) { | |
return | |
} | |
$tmp = $s.GroupComponent | |
$tmp = $tmp.Remove(0, $tmp.LastIndexOf('{') + 1) | |
$tmp = $tmp.Remove($tmp.LastIndexOf('}')) | |
$groupguid = $tmp | |
$s = ($powerSettingTable | Where-Object InstanceID -Match "$guid") | |
$descr = [string]::Format("# {0}", $s.ElementName) | |
$runcfg = [string]::Format("powercfg -attributes {0} {1} -ATTRIB_HIDE", $groupguid, $guid) | |
Write-Output $descr | |
Write-Output $runcfg | |
Write-Output "" | |
} |
I have written my own version which works with PowerShell 7 and every Windows version: Unlock-PowerCfg.ps1
# Unlock Power Plans by disabling "Connected Standby"
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power' -Name 'CSEnabled' -Value 0 -Force
# Unlock hidden options
$PowerSettings = Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings' -Recurse -Depth 1 | Where-Object { $_.PSChildName -NotLike 'DefaultPowerSchemeValues' -and $_.PSChildName -NotLike '0' -and $_.PSChildName -NotLike '1' }
ForEach ($item in $PowerSettings) { Set-ItemProperty -Path ($item).Replace('HKEY_LOCAL_MACHINE','HKLM:') -Name 'Attributes' -Value 2 -Force }
@Velocet, small fix:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power' -Name 'CSEnabled' -Value 0 -Force
# Unlock hidden options
$PowerSettings = Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings' -Recurse -Depth 1 | Where-Object { $_.PSChildName -NotLike 'DefaultPowerSchemeValues' -and $_.PSChildName -NotLike '0' -and $_.PSChildName -NotLike '1' }
ForEach ($item in $PowerSettings) { Set-ItemProperty -Path ($item).Name.Replace('HKEY_LOCAL_MACHINE','HKLM:') -Name 'Attributes' -Value 2 -Force }
god thank you @Velocet @nick4fake guys!!!
Thanks @Velocet, your script actually works WIN 11 also, your amazing
what would i change to DISABLE all advanced power settings?
Instead of enable all options you can use Power settings GUI editor PowerSettingsExplorer
At least for my solution you don’t enable them: All settings become visible. Thats it.
I also wouldn’t download something from a random mediafire link posted on the internet… 🤨
Sorry, I have updated link to forum thread instead of direct zip
Could someone explain the basics to me? Do you have a video explaining how to install? Or is it just right-clicking and running in PowerShell?
@lucr80 Just copy those lines and paste in a PowerShell.
@banicpe @ar-ml and all others who will landing to this page from StackOverflow or google
also helpful
export
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings
and change all
"Attributes"=dword:00000001
to
"Attributes"=dword:00000000
and import PowerSettings back