HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11Modern StandbyPower ManagementpowercfgBatteryIntuneGroup PolicyEvent ViewerPowerShell

The laptop was flat by morning: Modern Standby, the sleep state your fleet actually uses

IA
Imran Awan
21 August 2026

The ticket always reads the same way. "I closed the lid at 6pm with 80 percent. At 8am it was flat." Somebody checks the power plan, sees Sleep set to 15 minutes, declares the settings correct, and closes the ticket as user error. Then it happens again on a different model, and again on a whole batch of a new hardware refresh. The reason this keeps happening is that almost nobody in the helpdesk chain knows that the laptop never went to sleep in the way they are imagining. On most modern hardware, "sleep" is not the old S3 state where the CPU is parked and RAM is merely refreshed. It is a state where Windows is technically still running, drivers are still loaded, the network can still be alive, and any badly behaved component can quietly burn a battery all night behind a closed lid. This post explains what that state actually is, how to tell which one a device is in, and which built-in reports name the exact component that drained the battery.

The short version

Most current laptops do not use S3 sleep. They use Modern Standby, an S0 low-power idle state where the system stays partially running, which Microsoft documents as mutually exclusive with S1-S3. Run powercfg /a to see which model a device uses and whether it is the Connected or Disconnected variant. Then use powercfg /requests, powercfg /waketimers and the powercfg /sleepstudy report, which names the five most active components in each sleep session, to attribute the drain to a specific requester instead of guessing. You cannot switch a device from Modern Standby to S3 by changing a setting, so the fix is always to control the wake and request surface, via Power.admx in Group Policy or the matching settings in the Intune settings catalog.

The problem: the lid was shut and the battery still went

Two different tickets share one wrong diagnosis. Learn to tell them apart before you touch anything.

The first shape is overnight drain. The lid is closed, nobody touches the machine, and the battery loses far more charge than it should. The user reports "it does not sleep properly". They are closer to right than the helpdesk usually admits.

The second shape is the machine wakes up on its own. The user finds the fan spinning in a bag, or the machine warm, or the lock screen already on when they open the lid. Sometimes both shapes happen on the same device, because a wake is what starts the drain.

The wrong diagnosis in both cases is "the power plan is misconfigured". The power plan usually is not misconfigured. What is actually happening is that the sleep state itself behaves nothing like the one the engineer is picturing.

Here is the sentence to internalise. Microsoft's own documentation of ACPI system power states says of the Modern Standby state: "the system remains partially running". Not off. Not parked. Partially running. Everything else in this post follows from that.

Context: what ACPI and S-states are, in one paragraph. ACPI stands for Advanced Configuration and Power Interface. It is the firmware-level standard that describes power states to the operating system. The system-wide states are numbered S0 through S5, plus G3 for mechanically off. Windows exposes those states, and a device only supports the ones its firmware advertises. Microsoft's table is worth memorising because the whole confusion in this post is a single row in it.
Power stateACPI stateWhat Microsoft documents about it
WorkingS0"The system is fully usable." Unused hardware components can still drop to lower device states.
Sleep (Modern Standby)S0 low-power idlePresent only on some SoC systems. The system "can very quickly switch from a low-power state to high-power state in response to hardware and network events". Microsoft states plainly: SoC systems that support Modern Standby "don't use S1-S3".
SleepS1 S2 S3"The system appears to be off." Volatile memory is kept refreshed to maintain system state. Systems typically support one of the three, not all three.
HibernateS4"The system appears to be off." Memory contents are written to the hibernation file so DRAM can be powered off entirely.
Soft offS5A full shutdown and boot cycle.
Mechanical offG3Completely off, consuming no power.

Read the second and third rows together. S1-S3 is the state where the machine "appears to be off" and only memory refresh keeps state alive. S0 low-power idle is a variant of the working state. That is not a naming quirk. It is the mechanism, and it is why an app can keep a Modern Standby laptop busy all night in a way it never could on an S3 machine.

Why it happens: S0 low-power idle is the working state with the screen off

What Modern Standby actually is

Modern Standby is Microsoft's name for the S0 low-power idle power model on Windows PCs. The documentation describes it as an expansion of the Windows 8.1 Connected Standby model, extended to hardware that could not meet the original Connected Standby bar, including systems with rotational or hybrid storage and network adapters that lack the full offload capability.

The design goal is a phone-like experience: "instant on / instant off", with the network stack able to stay alive so the device can be woken by a packet as well as by a button. The documentation is explicit that Windows and the SoC "are always listening for interesting events (such as a network packet or user input at a keyboard) and will wake up instantly when needed".

Two consequences fall out of that design, and they are the entire root cause of the drain tickets:

  1. Because the system is still running, software can still run. Microsoft calls the components allowed to keep the SoC active activators, because they register with the power manager as capable of blocking the return to the idle power mode.
  2. Because the network can stay alive, network events can wake the machine. That is a feature when a VoIP call arrives and a defect when a driver wakes the machine every four minutes.

Screen Off is not Sleep

Microsoft splits a Modern Standby session into two documented states, and you need both names to read the reports later.

StateWhat runs in itExpected duration
Screen OffThe period where the system is being quiesced and larger workloads are still finishing. Blockers live here.Documented as "typically expected to have a short duration".
SleepThe long-term low-power state. Only "explicitly allowed, value-adding activities" run. The system mostly sits in DRIPS.The bulk of an overnight session should be here.

DRIPS is worth spelling out because every report uses it: deepest runtime idle platform state. It is the state in which, per the documentation, "no software activity runs whatsoever". A sleep session with a low DRIPS percentage is a session where something kept waking the silicon up.

The phase chain: where a blocker actually blocks

When the screen turns off, Windows walks a documented, sequential set of phases to quiet the system down. Each phase must complete before the next starts. This is the chain to picture when a machine "will not go to sleep".

Phase, in orderWhat the system is waiting forDocumented duration behaviour
No-CS phaseThe sleep timeout to elapse, and outstanding power requests from applications to expire.Typically under a second. But power requests "will block the NoCS phase indefinitely on AC power, and for up to 5 minutes on DC power". Audio and mobile hotspots are allowed to run indefinitely.
Connection phaseRemote Desktop sessions to be gone.Zero seconds if none are connected; otherwise lasts until they disconnect or time out.
Process Lifetime Manager (PLM) phaseForeground Microsoft Store apps to be suspended, and audio to stop.Typically under five seconds.
Maintenance phaseRunning system maintenance tasks to finish.Most likely to block on AC power.
Desktop Activity Moderator (DAM) phaseDesktop applications to be suspended.Typically under one second.
Low-power phaseRegistered subscribers to be notified. This is where Screen Off ends and Sleep begins.Typically five seconds.
Resiliency notification phaseThe network subsystem to be told to go low-power. Adapters that cannot do Modern Standby are turned off (D3).Typically under one second.
Resiliency phaseNothing. This is the steady state where activators may briefly run. Session-0 services are throttled by the DAM to no more than one second of activity every 30 seconds."The majority of time the system is spent in DRIPS."

Notice the first row. On AC power, one application holding a power request blocks sleep entry indefinitely. On battery it blocks for up to five minutes. That five-minute figure is documented twice: in the phase table and in the power request reference, which states "on Modern Standby systems on DC power, power requests are terminated after 5 minutes". Microsoft also tells you exactly how to find the culprit: "The applications with power requests can be inspected by running Powercfg.exe with the /requests option."

Gotcha: the phase chain is not tunable. The documentation says it plainly: "Currently, no means is available to system designers to change or influence the behavior of these phases." There is no registry value to make PLM give up faster or to skip the maintenance phase. If someone hands you a "tweak" that claims to do this, it is not a supported knob. The only supported lever is to stop the thing that is blocking.

The two variants: connected and disconnected standby

Modern Standby comes in two flavours, and the difference is entirely about whether the network survives the sleep.

You do not guess which one you have. The distinction shows up as literal text in the powercfg /a output, and that command is covered in the next section.

There is a third behaviour layered on top since Windows 10 version 2004: Adaptive Connected Standby (ACS), which is now the connectivity default on Modern Standby systems. With ACS, Windows itself decides whether to keep connectivity alive while on battery. It grants Internet connectivity to apps that need it, such as when Remote Desktop is enabled or a UWP app is set to always run in the background, and otherwise quiesces networking during sleep while keeping the network instantly ready on resume. The documentation notes that ACS decides the connectivity type at the start of a sleep session and keeps it for the whole session.

Do not enable legacy S3 Wake-on-LAN on a Modern Standby machine. This is a documented caution, not an opinion. Microsoft writes: "Do not enable S3 wake-on-LAN (WoL) on Modern Standaby capable systems. Waking a computer with a magic packet is natively supported by Modern Standby. Enabling legacy S3 WoL is not necessary and may cause DHCP and/or DNS packet storms on your network." If you inherited a firmware baseline or a NIC advanced-property script from an S3-era fleet, this is one of the first things to unwind.

The 24H2 change you will trip over

Windows 11 version 24H2 added a defensive behaviour that changes what you will observe on newer builds. The wake sources documentation states that "a new power-saving measure was introduced to Modern Standby to prevent unexpected battery drain. If excessive battery drain is detected, most wake sources will be disabled. In this state, the device can be woken from Modern Standby by pressing the power button or opening the lid."

That has a direct diagnostic consequence. A user reporting "my machine will not wake on a key press any more" on 24H2 may be seeing Windows protecting itself from a drain problem you have not found yet. The sleepstudy exit-reason list includes matching codes for it, documented as Restricted Standby Battery Drain Budget Exceeded, Restricted Standby Doze Timeout and Smart Restricted Standby. Two other 24H2 behaviour changes belong in the same mental note: pressing the power button now engages input suppression so the display will not turn on in clamshell mode with the lid closed unless an external display is attached, and Voice Input is no longer supported as a wake source from sleep.

The binaries and the database behind all of this

Naming the components makes the flow concrete. Everything below was confirmed present on a Windows 11 Enterprise build 26200 device; the role descriptions come from Microsoft documentation where documentation exists, and I flag where it does not.

FileRole in the flowSourcing
C:\Windows\System32\powercfg.exeThe command-line tool documented for controlling power schemes, reporting available sleep states, controlling device power states and analysing energy problems. Every diagnostic in this post runs through it.Documented.
C:\Windows\System32\ntoskrnl.exeHosts the kernel power manager, the component the driver documentation names as the thing that turns off audio and video for away mode and that services driver power requests.Power manager documented; binary presence verified on device.
C:\Windows\System32\umpo.dllThe user-mode power service component. Loaded by the Power service. Microsoft does not publish a reference page for this DLL.Observed on device, undocumented role. Do not build detection on it.
C:\Windows\System32\umpodev.dllCompanion user-mode power device component to umpo.dll.Observed on device, undocumented.
C:\Windows\System32\powrprof.dllExports the documented power profile API surface, including SetSuspendState, which is the API named in the event that records a process forcing a sleep transition.API documented.
C:\Windows\System32\drivers\pdc.sysThe Power Dependency Coordinator. The sleepstudy report's offender types and exit reasons include PDC Phase and PDC Signal entries, and the phase documentation refers to "PDC resiliency clients".PDC concept documented in the reports; driver file observed on device.
C:\Windows\System32\drivers\acpi.sys, battc.sys, cmbatt.sysThe ACPI driver and the battery class and control-method battery drivers. These are what surface the _BST, _BIX and _BTP control methods that the sleepstudy drain calculation reads.Control methods documented; driver files observed on device.
C:\Windows\System32\sru\SRUDB.datThe System Resource Usage Monitor database. This is the store that powercfg /srumutil dumps energy estimation data from.The /srumutil option and SRUM are documented; the on-disk path is observed on device and not documented, so treat it as an implementation detail.
C:\Windows\System32\energyprov.dllEnergy provider component associated with the energy reporting surface.Observed on device, undocumented.

Services and the one scheduled task

Four services and one task are worth knowing by name on a drain investigation.

Short nameDisplay nameWhy it matters here
PowerPowerThe power policy service. Expected Running. Loads the user-mode power components.
SystemEventsBrokerSystem Events BrokerExpected Running. This is the service that appears as the owner of most armed wake timers, including the ones set on behalf of scheduled tasks. You will see it by name in powercfg /waketimers.
DPSDiagnostic Policy ServiceExpected Running. Hosts diagnostic scenarios and is the service context around SRUM energy estimation.
SysMainSysMainExpected Running by default. Frequently blamed for standby activity in forum folklore. Verify it in a sleepstudy top-offenders table before you touch it, rather than disabling it on a hunch.
Task SchedulerMicrosoftWindowsPower Efficiency DiagnosticsAnalyzeSystem

That task existed and was in the Ready state on the test device. It is the in-box power efficiency analysis task. It is the only scheduled task under \Microsoft\Windows\ that is dedicated to power efficiency diagnostics, so if you are looking for "the built-in thing that checks power health", that is it.

How to verify: powercfg first, reports second, guessing never

Step one, always: which sleep model is this

Every investigation starts with one command. powercfg /a reports the sleep states available on the system and, per the documentation, "attempts to report reasons why sleep states are unavailable". Run it from an elevated prompt.

PowerShell - run elevated - genuine run, identifiers replaced
PS C:\> powercfg /a # Reports which sleep states this device supports, and why the others are missing. The following sleep states are available on this system: Standby (S0 Low Power Idle) Network Connected # HEALTHY READ: this is Modern Standby, Connected variant. The literal words # "Network Connected" are how you tell Connected from Disconnected Standby. Hibernate The following sleep states are not available on this system: Standby (S1) The system firmware does not support this standby state. This standby state is disabled when S0 low power idle is supported. Standby (S2) The system firmware does not support this standby state. This standby state is disabled when S0 low power idle is supported. Standby (S3) The system firmware does not support this standby state. This standby state is disabled when S0 low power idle is supported. The current Device Guard configuration has disabled this standby state. # EXPECTED, NOT BROKEN: on a Modern Standby machine S1-S3 are supposed to be # absent. Microsoft documents that SoC systems supporting Modern Standby # do not use S1-S3 at all. Three reasons stack up here, see below. Hybrid Sleep Standby (S3) is not available. The hypervisor does not support this standby state. Fast Startup This action is disabled in the current system policy.

Now read the reason strings, because they are the part everyone misinterprets.

Reason stringWhat it actually means
"The system firmware does not support this standby state."The platform firmware never advertised this S-state to Windows in its ACPI tables. This is a hardware and firmware fact, not a Windows setting. On a Modern Standby laptop this line against S1, S2 and S3 is normal and expected. It is not a fault to fix.
"This standby state is disabled when S0 low power idle is supported."Windows itself is suppressing S1-S3 because the platform advertises S0 low-power idle. This is the documented mutual exclusion between the two models stated in the OS output.
"The current Device Guard configuration has disabled this standby state."Virtualization-based security is active on this device and has taken S3 off the table as well. This is the one place where your security baseline and your power model genuinely intersect.
"The hypervisor does not support this standby state."A hypervisor is running, which is normal on a VBS-enabled machine, and it blocks the state.
"This action is disabled in the current system policy."Policy or configuration on the device has turned the item off, as opposed to firmware or hardware being incapable.
Gotcha: you cannot flip a device from Modern Standby to S3 to "fix" drain. The Modern Standby documentation is unambiguous: "Switching between S3 and Modern Standby cannot be done by changing a setting in the BIOS. Switching the power model is not supported in Windows without a complete OS re-install." Registry values circulated online for this purpose, such as a CsEnabled or PlatformAoAcOverride value under HKLM\SYSTEM\CurrentControlSet\Control\Power, are not documented by Microsoft, and on the Windows 11 build 26200 test device neither value was present at all. Do not build fleet remediation on them.

Step two: what is holding the system awake, and what is armed to wake it

These four commands answer the two questions that actually matter. Run them elevated; without administrator rights the request and timer output is incomplete, which is worse than no answer because it looks clean.

PowerShell - run elevated - genuine run, identifiers replaced
PS C:\> powercfg /requests # Enumerates application and driver Power Requests. Documented as: "Power Requests # prevent the computer from automatically powering off the display or entering a # low-power sleep mode." DISPLAY: None. SYSTEM: None. # HEALTHY READ: "None." under SYSTEM means nothing is currently blocking sleep entry. # BROKEN would look like: [PROCESS] \Device\HarddiskVolume3\...\SomeApp.exe # A named requester under SYSTEM or EXECUTION is your overnight-drain suspect. AWAYMODE: None. EXECUTION: None. PERFBOOST: None. ACTIVELOCKSCREEN: None. PS C:\> powercfg /waketimers # Enumerates active wake timers. Documented: "If enabled, the expiration of a wake # timer wakes the system from sleep and hibernate states." Timer set by [SERVICE] \Device\HarddiskVolume3\Windows\System32\svchost.exe (SystemEventsBroker) expires at 2:09:32 AM on 8/22/2026. Reason: Windows will execute 'NT TASK\Contoso\Nightly Inventory' scheduled task that requested waking the computer. # THIS IS THE MONEY LINE. A scheduled task with "Wake the computer to run this task" # enabled will pull the machine out of standby at 02:09 every night. That is the # difference between an idle overnight and an active one. PS C:\> powercfg /devicequery wake_armed # Lists devices currently configured to wake the system from any sleep state. USB4 Root Router (1.0) USB4 Root Router (1.0) (001) Mobile Broadband Adapter PS C:\> powercfg /lastwake # Reports what woke the system from the last sleep transition. Wake History Count - 0 # READ THIS CAREFULLY: zero here means the wake history buffer is empty, not that # the machine never woke. Cross-check against the event log before concluding anything.

The request categories in that output deserve a table, because the names in the tool and the names in the API do not line up perfectly and that trips people up.

Documented request typeWhat holding it doesShown by powercfg as
PowerRequestDisplayRequiredThe session display stays on, no screensaver starts, and the session is not auto-locked after inactivity.DISPLAY
PowerRequestSystemRequired"Prevents the computer from automatically entering sleep mode after a period of user inactivity." This is the one drivers are permitted to use.SYSTEM
PowerRequestAwayModeRequiredAudio and video are turned off so the machine looks asleep while it keeps running. Documented as "only applicable on Traditional Sleep (S3) systems".AWAYMODE
PowerRequestExecutionRequiredThe calling process keeps running instead of being suspended or terminated by process lifetime management. Supported from Windows 8 onward.EXECUTION
Gotcha: two of the six headings powercfg prints are not in the documented enumeration. On the test device powercfg /requests printed six sections, adding PERFBOOST and ACTIVELOCKSCREEN to the four above. The documented POWER_REQUEST_TYPE enumeration contains exactly four members. Treat the extra two as observed tool output rather than a documented contract, and do not write a parser that hard-fails when the set of headings changes. Also remember that /requests is a snapshot of right now. A requester that only appears at 02:00 will not be there when you look at 10:00.

Step three: the reports that name the offender

The live commands tell you about now. The reports tell you about last night. There are five, all built into powercfg.exe, and each writes a file into the current directory unless you pass /output.

CommandWhat the report containsWhere and over what window
powercfg /sleepstudyThe one to run first. Per-session Modern Standby quality: static platform and firmware info, a usage-trend graph, a colour-coded summary table of each state segment with start time, duration, power source and battery consumed, plus for each Sleep session "the five most active components ('top offenders')" with type, name and device path, and an idle-time histogram. Ends with battery configuration including design capacity and cycle count.Writes Sleepstudy-report.html to the current working directory. Covers the last three days by default; /duration takes up to 28 days.
powercfg /batteryreportBattery usage characteristics "over the lifetime of the system".HTML report in the current path. /duration in days, /output for a path, /xml for XML.
powercfg /systemsleepdiagnostics"A report of intervals when the user was not present over the last three days on the system, and if the system went to sleep." Exactly the report for "did it even try to sleep last night".HTML in the current path. Documented as requiring administrator privileges and an elevated prompt.
powercfg /systempowerreport (/spr)System power transitions over the last three days "including connected standby power efficiency". This is where the "Networking in standby" field lives that tells you whether apps were connected during sleep.HTML in the current path. Requires an elevated prompt.
powercfg /srumutil"Enumerates the entire Energy Estimation data from the System Resource Usage Monitor (SRUM)" as XML or CSV. Per-app energy attribution rather than per-session.File you name with /output, formatted with /xml or /csv.
powercfg /energyAnalyses the system "for common energy-efficiency and battery life problems". Should be run on an idle machine with nothing open.HTML in the current path. /duration in seconds, default 60.

How to read a sleepstudy summary table without a manual: the rows are colour-coded, and the thresholds are documented. For a Sleep session, red means the DRIPS rate is under 80 percent or the drain rate is at or above 1 percent per hour. Yellow means DRIPS between 80 and 94 percent, or drain between 0.33 and 1 percent per hour. Green is everything else. Sessions under two minutes show no detailed data. Overall sessions shorter than ten minutes are not tracked at all, so a five-minute lid-close test tells you nothing.

Tip: the top-offenders table already tells you the category of the problem. The offender types are documented, so you can triage from the type alone before you even recognise the name. Fx Device means a device with a power-framework driver, typically on the SoC. Activator means a software component allowed to keep the system active. Networking points at the network subsystem. Processor means CPU active time outside any activator. PDC Phase means time spent entering or exiting standby, which is a Screen Off problem rather than a Sleep problem. Rows over ten percent busy are red, five to ten percent orange.

Step four: the event log

Two providers matter, both writing to the plain System log. There is no dedicated operational channel for power on Windows client.

Event Viewer > Windows Logs > System > Filter Current Log > Event sources: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Power-Troubleshooter

Microsoft does not publish a consolidated Event ID reference page for Microsoft-Windows-Kernel-Power on Windows client. So rather than invent meanings, the message strings below were read directly from the provider's own manifest on a Windows 11 build 26200 device using wevtutil gp Microsoft-Windows-Kernel-Power /ge:true /gm:true, and cross-checked against real records in the System log on that device. That is the authoritative source for the string; it is not a documented contract, so do not treat the IDs as a stable API.

Event IDMessage text from the provider manifestHow to use it
42"The system is entering sleep." The record carries a Sleep Reason. On the test device the observed reason was Battery.Confirms an attempt to sleep happened at all, and why. Absence of 42 and 506 across a whole night is itself the finding.
107"The system has resumed from sleep."Pairs with 42. Count the pairs to count the night's transitions.
187"User-mode process attempted to change the system state by calling SetSuspendState or SetSystemPowerState APIs."The one to look for when something in user mode is forcing transitions. Note: this ID was present in the provider manifest but had zero records on the test device, so absence is normal.
506"The system is entering Modern Standby" plus a Reason. On the test device an observed reason was AC/DC Display Burst Suppressed.The Modern Standby-specific entry event. This is the one to count for "how many standby sessions were there".
507"The system is exiting Modern Standby" plus a Reason. An observed reason on the test device was Input Mouse.The single most useful ID on this topic. The reason string maps to the documented sleepstudy exit-reason list, so a run of 507s with a non-user reason is your drain cause.
172"Connectivity state in standby: %1, Reason: %2". Observed on the test device as Connected, Reason: None.Tells you whether the session was actually connected, which is the Adaptive Connected Standby decision made visible.

The second provider is the useful one for a single question: what woke it.

Event Viewer - System log - genuine record, timestamps preserved
Source:  Microsoft-Windows-Power-Troubleshooter
Event ID: 1   Level: Information   Log: System

The system has returned from a low power state.

Sleep Time: 2026-07-27T15:01:06.736699900Z
Wake Time:  2026-07-27T15:04:21.285352400Z

Wake Source: Unknown

<-- "Unknown" is common and is not a bug. It means the platform did not attribute
<-- the wake to a named source. When it IS named, this single field ends the
<-- investigation faster than any report.

The fix: policy the wake surface, not the sleep state

You cannot change the sleep model. So everything you can actually do falls into three buckets: stop things holding power requests, stop things arming wake timers, and set the timeouts sensibly. All three are configurable, and all three have both a Group Policy and an Intune path.

The registry surface, and an honest caveat about it

Most power configuration is not registry-first. Power schemes, subgroups and settings are addressed by GUID through powercfg and the power API, and Microsoft's own guidance for reading and writing them is powercfg /query, /setacvalueindex and /setdcvalueindex, not registry editing. There is no documented registry key that holds "the current sleep timeout" for you to read.

What is documented is the policy side. Every ADMX-backed power policy states its registry key and value name, so the following table is a genuine documented reference rather than a reverse-engineered one. All of these hang off one parent key.

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Power\PowerSettings\<setting GUID>
Setting GUID subkeyPolicy it backsValue names
29F6C1DB-86DA-48C5-9FDB-F2B67B1F44DASpecify the system sleep timeout (plugged in / on battery). Value is seconds.ACSettingIndex, DCSettingIndex
7bc4a2f9-d8fc-4469-b07b-33eb785aaca0Specify the unattended sleep timeout. Documented: 0 seconds means Windows does not automatically transition to sleep.ACSettingIndex, DCSettingIndex
9D7815A6-7EE4-497E-8888-515A05F02364Specify the system hibernate timeout. Value is seconds.ACSettingIndex, DCSettingIndex
A4B195F5-8225-47D8-8012-9D41369786E2Allow applications to prevent automatic sleep. This is the power-request lever.ACSettingIndex, DCSettingIndex
f15576e8-98b7-4186-b944-eafa664402d9Allow network connectivity during connected-standby.ACSettingIndex, DCSettingIndex
abfc2519-3608-4c2a-94ea-171b0ed546abAllow standby states (S1-S3) when sleeping. Note the S1-S3 in the name; on a Modern Standby device this is not your lever.ACSettingIndex, DCSettingIndex
5CA83367-6E45-459F-A27B-476B1D01C936Select the lid switch action. Documented values: 0 no action, 1 sleep (default), 2 hibernate, 3 shutdown.ACSettingIndex, DCSettingIndex
7648EFA3-DD9C-4E3E-B566-50F929386280Select the Power button action. Same four documented values.ACSettingIndex, DCSettingIndex
3C0BC021-C8A8-4E07-A973-6B14CBCB2B7ETurn off the display, in seconds.ACSettingIndex, DCSettingIndex
0e796bdb-100d-47d6-a2d5-f7d2daa51f51Require a password when a computer wakes.ACSettingIndex, DCSettingIndex

Two more documented registry facts sit outside that parent key and are worth knowing.

Registry Editor
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
  HibernateEnabled     REG_DWORD   documented: setting this to 0 disables hibernate
  HiberFileSizePercent REG_DWORD   documented: a value of 40 or more is treated as a full hiberfile

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling
  PowerThrottlingOff   REG_DWORD   documented policy target for "Turn off Power Throttling"

<-- On the Windows 11 build 26200 test device HibernateEnabled was not present
<-- and HiberFileSizePercent was 0. Absent is a real state here, not a read failure.
Do not "fix" drain by disabling hibernate or blanket-disabling wake timers. Disabling hibernate on a laptop removes the state the battery documentation relies on: the platform is documented to hibernate on x86 when remaining capacity falls below DesignCapacityOfLow reported in the ACPI _BIX control method. Take that away and a deep drain becomes an unclean power loss instead of a clean hibernate. Equally, setting "Allow wake timers" to Disable fleet-wide will silently break every maintenance window, patch install and inventory task that relies on waking a device. Fix the specific requester you found in /waketimers instead.

Group Policy: the exact click path

Every setting in the table above lives in Power.admx, under one branch. Here is the full path and the walkthrough.

gpedit.mscComputer ConfigurationAdministrative TemplatesSystemPower ManagementSleep Settings
  1. Open the Group Policy Management Editor on your policy, or gpedit.msc for a local test.
  2. Navigate to Computer Configuration > Administrative Templates > System > Power Management > Sleep Settings.
  3. Open Allow applications to prevent automatic sleep (on battery). Read the help text carefully before choosing. Enabling this policy means "any application, service, or device driver prevents Windows from automatically transitioning to sleep". Disabling it is the restrictive choice: only user input then determines whether Windows sleeps. Set it to Disabled if you want to neutralise misbehaving power requests, and set the plugged-in twin the same way.
  4. Open Specify the system sleep timeout (on battery) and set a value in seconds. Do the same for the plugged-in variant.
  5. Open Specify the unattended sleep timeout (on battery). This is the one that governs sleep when nobody is at the machine. Remember that 0 seconds means Windows will never automatically sleep.
  6. If you need connectivity behaviour pinned rather than left to Adaptive Connected Standby, open Allow network connectivity during connected-standby (on battery) and (plugged in). Enabled maintains connectivity in standby. Disabled means connectivity "isn't guaranteed", and the documentation adds that the restriction "currently applies to WLAN networks only, and is subject to change".
  7. For the lid and buttons, move up one level to Power Management > Button Settings and set Select the lid switch action and Select the Power button action.
  8. Close the editor and run gpupdate /target:computer /force on a test device, then re-run powercfg /q SCHEME_CURRENT SUB_SLEEP and confirm the indexes changed.
Gotcha: the underlying power setting for connectivity in standby is documented as deprecated, while the policy that writes it is not. The power-setting reference page for GUID f15576e8-98b7-4186-b944-eafa664402d9, whose provisioning alias is Common\Power\Policy\Settings\Misc\ConnectivityInStandby, is documented as available "in Windows Vista through Windows 10, version 1909" and "Deprecated starting in Windows 10, version 2004". The ADMX-backed policy that writes the same GUID under Software\Policies is documented as applying to Windows 11 21H2 and later. Those two pages disagree in spirit, and 2004 is also the release where Adaptive Connected Standby became the default. Test the outcome on your actual build rather than assuming the policy still overrides ACS.

Intune: the settings catalog path

There is no separate Intune template for power. These settings come through the settings catalog, generated from the Policy CSP, so you build a settings catalog profile and pick them out of the picker.

intune.microsoft.comDevicesManage devicesConfigurationCreateNew policy
  1. Sign in to the Microsoft Intune admin center with an account holding at least the Policy and Profile Manager built-in role.
  2. Select Devices > Manage devices > Configuration > Create > New policy.
  3. Set Platform to Windows 10 and later and Profile type to Settings catalog. Select Create.
  4. Name it something a future you will recognise, such as Win11: Modern Standby power baseline. Select Next.
  5. On Configuration settings, select Add settings, then type sleep in the search box. The picker returns the Power category for the Policy CSP settings and the Administrative Templates categories for the ADMX-backed ones.
  6. From the Power category, add Standby Timeout On Battery, Standby Timeout Plugged In, Unattended Sleep Timeout On Battery and Select Lid Close Action On Battery. The tooltips link straight to the CSP page for each one.
  7. Search again for connected-standby and add Allow network connectivity during connected-standby for both power sources if you are pinning that behaviour, and prevent automatic sleep for the power-request lever.
  8. Set each value. Close the picker, select Next, add scope tags if you use them, then assign to a small pilot group first.
  9. On Review + create, select Create. After the next device check-in, verify on a target device with powercfg /q SCHEME_CURRENT SUB_SLEEP and by reading the policy registry key from the table above.

If you need the raw OMA-URIs for a custom profile or another MDM, these are the documented ones.

PolicyOMA-URIFormat
System sleep timeout, on battery./Device/Vendor/MSFT/Policy/Config/Power/StandbyTimeoutOnBatteryADMX-backed, chr
Unattended sleep timeout, on battery./Device/Vendor/MSFT/Policy/Config/Power/UnattendedSleepTimeoutOnBatteryint, range 0 to 4294967295
Lid close action, on battery./Device/Vendor/MSFT/Policy/Config/Power/SelectLidCloseActionOnBatteryint, 0 to 3
Allow applications to prevent automatic sleep, on battery./Device/Vendor/MSFT/Policy/Config/ADMX_Power/AllowSystemPowerRequestDCADMX-backed, chr
Network connectivity during connected-standby, on battery./Device/Vendor/MSFT/Policy/Config/ADMX_Power/DCConnectivityInStandby_2ADMX-backed, chr
Specify a custom active power plan./Device/Vendor/MSFT/Policy/Config/ADMX_Power/CustomActiveSchemeOverride_2ADMX-backed, chr, takes a scheme GUID
Allow hibernate./Device/Vendor/MSFT/Policy/Config/Power/AllowHibernateint, 0 or 1, default 1
Gotcha: the Allow hibernate policy loses to powercfg. The CSP documentation is explicit that this policy "does not override powercfg configuration and has no effect on the device if Hibernate is disabled using either of the following methods": running powercfg /hibernate off, or setting HibernateEnabled to 0 under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power. If an old build task or an OEM image ran powercfg /h off, your Intune policy will report success and change nothing. Check the device, not the report.

Defender and security policy: mostly N/A, with one real exception

There is no Defender profile, no attack surface reduction rule, no exploit protection mitigation and no WDAC or firewall setting that governs Modern Standby. If you were expecting an Endpoint Security profile in this post, there genuinely is not one, and saying so is more useful than inventing a link.

The one real intersection is virtualization-based security. Look again at the powercfg /a output earlier in this post: against Standby (S3) the device reported "The current Device Guard configuration has disabled this standby state", and against Hybrid Sleep it reported "The hypervisor does not support this standby state". On a device with VBS or Credential Guard enabled, your security baseline is one of the things removing legacy sleep states from the menu. That is worth knowing before someone spends a week trying to "re-enable S3" on a hardened fleet.

Proof it worked: a real run on a Modern Standby laptop

The companion script for this post pulls the whole first pass into one read-only report: supported sleep states and the standby variant, the active scheme and its sleep subgroup indexes, current power requests, armed wake timers and wake-armed devices, battery full-charge versus design capacity, the policy registry key, and a count of the sleep and wake events. It changes nothing. It does not even generate a report file, precisely so it can be run against a user's machine during a call without leaving anything behind.

Script: Get-ModernStandbyDrainReport.ps1
Repo: github.com/Imran76Awan/Windows-11-Scriptsmodern-standby-power-plan-battery-drain
Read-only. ASCII only. Zero parse errors on Windows PowerShell 5.1 and PowerShell 7. Requires elevation, and refuses to run without it rather than under-report what is holding the machine awake.

Here is a genuine run on the Windows 11 Enterprise build 26200 test laptop, with the computer name and one scheduled task name replaced. Output is abridged to the sections that carry the verdict.

PowerShell 5.1 - elevated - genuine run, identifiers replaced, abridged
PS C:\> .\Get-ModernStandbyDrainReport.ps1 Computer: CONTOSO-LT-0042 PowerShell: 5.1.26100.9168 Elevated: Yes OS: Microsoft Windows 11 Enterprise build 26200 1. SLEEP STATES SUPPORTED (powercfg /a) Available: - Standby (S0 Low Power Idle) Network Connected - Hibernate Sleep model: Modern Standby (S0 low power idle) Standby variant: Connected (Connected Standby) # The two lines an admin actually needs. Anyone still assuming S3 on this model # is troubleshooting a state the device does not have. 2. ACTIVE POWER SCHEME Power Scheme GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced) Sleep after [STANDBYIDLE] DC index = 0x00000000 # WORTH A SECOND LOOK: the index is seconds in hex, and Microsoft documents a value # of 0 seconds as "Windows does not automatically transition to sleep". So on battery # this machine is configured not to idle into sleep at all. That alone can explain # an overnight drain, and it is a policy question rather than a hardware fault. Allow wake timers [RTCWAKE] DC index = 0x00000000 # 0 for RTCWAKE is the "Disable" index, so wake timers are meant to be off here. 3. POWER REQUESTS HOLDING THE SYSTEM AWAKE Request types reported: DISPLAY, SYSTEM, AWAYMODE, EXECUTION, PERFBOOST, ACTIVELOCKSCREEN No process, service or driver is currently holding a power request. # HEALTHY, WITH A CAVEAT the script prints for you: this is a snapshot. 4. ARMED WAKE TIMERS AND WAKE-ARMED DEVICES Timer set by [SERVICE] ...\svchost.exe (SystemEventsBroker) expires at 2:09:32 AM Reason: Windows will execute 'NT TASK\Contoso\Nightly Inventory' scheduled task that requested waking the computer. # THE ACTUAL FINDING. A wake timer is armed for 02:09 even though RTCWAKE reads # Disable, which is exactly the sort of contradiction you want surfaced rather # than averaged away. Chase the task, not the power plan. Devices armed to wake the system: USB4 Root Router (1.0) Mobile Broadband Adapter 5. BATTERY CAPACITY VERSUS DESIGN CAPACITY Design capacity: READ FAILED (BatteryStaticData unavailable and Win32_Battery.DesignCapacity is null on this driver) - value unknown, NOT zero Full charge capacity (mWh): 51360 Cycle count: 331 Health (full / design): NOT CALCULATED - one input was unreadable. # THIS IS THE FAIL-LOUD BEHAVIOUR WORKING. The ACPI battery driver on this model # does not implement BatteryStaticData, and Win32_Battery.DesignCapacity is null. # A lazier script would print 0 and compute a health figure of infinity or zero. SUMMARY Modern Standby: Yes - S0 low power idle Standby variant: Connected (Connected Standby) Active power requests: 0 **************************************************************** REPORT INCOMPLETE - the following fields could not be read. They are NOT zero and NOT absent. They are unknown. - Design capacity -- BatteryStaticData unavailable and Win32_Battery.DesignCapacity is null on this driver Exiting 2. Do not treat this run as a pass. **************************************************************** PS C:\> $LASTEXITCODE 2

Read that exit code as the feature it is. Exit 0 means every read succeeded. Exit 2 means the report printed but at least one field is genuinely unknown, so you should not tick the box. Exit 1 means a critical read failed, or the session was not elevated, and the script aborted rather than tell you that nothing is holding the machine awake when it simply could not look.

Closing the loop with the built-in reports

Once the script has told you the sleep model and pointed at a suspect, run the two reports it deliberately does not generate. Do it in a directory you chose, from an elevated prompt, because both write files.

Command Prompt (admin) - illustrative session, not a captured run
C:\Temp> powercfg /sleepstudy /duration 7 # Writes Sleepstudy-report.html into the current directory, covering seven days. # Open it and go straight to the Sleep session rows. RED means DRIPS under 80% # or drain at or above 1% per hour. Click the row for the top-offenders table. C:\Temp> powercfg /systemsleepdiagnostics # Writes the "was nobody there, and did it sleep" report. Run this when the user # swears they closed the lid and the sleepstudy shows no long Sleep session. C:\Temp> powercfg /batteryreport /output C:\Temp\battery.html # The authoritative design-capacity figure when WMI will not give it up, which is # exactly the gap the script reported as READ FAILED above. C:\Temp> powercfg /srumutil /output C:\Temp\srum.csv /csv # Per-app energy estimation out of the SRUM database. Use it to confirm that the # component named in the top-offenders table is also the one burning the energy.

The order matters. Sleep model, then live requests and timers, then the per-session report, then per-app energy. Every step narrows the suspect list from a whole machine to one component with a name you can act on. That is the whole difference between "the laptop drains overnight" and "the nightly inventory task arms a wake timer at 02:09 and the machine never gets back to DRIPS afterwards".

References

Microsoft-official sources for everything asserted above.

Community deep-dives, both fetched and confirmed on topic before citing.

AuthorPostWhy it is worth reading
Rudy Ooms (call4cloud.nl)Three Intune Power Settings outside Ebbing MissouriWalks three practical ways to deliver power configuration from Intune: a PowerShell script wrapping powercfg, a registry-based Win32 app, and the settings catalog. Useful when the catalog does not expose the exact knob you need.
Maurice Daly (MSEndpointMgr)Proactive Battery Replacement with Endpoint AnalyticsUses powercfg /batteryreport and the design-capacity versus full-charge-capacity ratio as a fleet-scale battery replacement signal, which is the reporting side of the battery section above.
PowerShell — companion script

Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-ModernStandbyDrainReport.ps1 — Read-only Modern Standby and overnight battery drain triage report for Windows 10 / Windows 11.
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows 11
Attack Surface Reduction rules broke a line-of-business app:…
An ASR rule in Block mode kills an app and tells you nothing but a GUID. Here is the…
Windows 11
SMB signing became mandatory and your NAS stopped working:…
Windows 11 24H2 and later require SMB signing, refuse insecure guest logons and ship…
Windows 11
Controlled folder access blocked your backup software: reading…
Microsoft Defender's controlled folder access blocks untrusted processes writing to…