ANAVEM
Languagefr
IT administrator monitoring Windows power management events and Event ID 4946 on multiple displays in a professional data center environment
Event ID 4946InformationMicrosoft-Windows-Kernel-PowerWindows

Windows Event ID 4946 – Microsoft-Windows-Kernel-Power: System Power State Transition

Event ID 4946 indicates a system power state transition, typically when Windows enters or exits sleep, hibernation, or other power management states. Critical for diagnosing power-related issues.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
18 March 202612 min read 0
Event ID 4946Microsoft-Windows-Kernel-Power 5 methods 12 min
Event Reference

What This Event Means

Windows Event ID 4946 represents a fundamental component of the Windows power management logging system. Generated by the Microsoft-Windows-Kernel-Power provider, this event captures detailed information about system power state changes, providing administrators with visibility into how their systems handle power transitions.

The event structure includes several key data points: the source power state (such as S0 for fully operational, S3 for sleep, or S4 for hibernation), the target power state, the reason for the transition (user-initiated, system policy, or automatic), and timing information. This data proves invaluable when diagnosing power-related issues or optimizing system power consumption.

In Windows 11 and Server 2025, Microsoft has enhanced the power management logging to include additional context about Modern Standby states and connected standby scenarios. The event now provides more granular information about partial power states and device-specific power transitions, making it easier to identify which components are preventing proper sleep states or causing unexpected wake events.

The event fires in both directions of power transitions - when entering low-power states and when resuming to full operation. This bidirectional logging allows administrators to correlate sleep/wake cycles with system performance issues, application behavior, and user experience problems. The timing information helps identify slow resume operations or failed sleep attempts that might impact productivity.

Applies to

Windows 10Windows 11Windows Server 2019/2022/2025
Analysis

Possible Causes

  • System entering sleep mode (S3) through user action or power policy
  • System transitioning to hibernation (S4) due to low battery or configured timeout
  • Hybrid sleep activation combining sleep and hibernation features
  • Modern Standby state changes in Windows 11 and compatible hardware
  • System resuming from any low-power state to active operation
  • Connected standby transitions on tablets and ultrabooks
  • Power button press triggering configured power action
  • Automatic power state changes due to power management policies
  • Wake-on-LAN events causing system resume from sleep
  • Scheduled task or system maintenance triggering wake events
Resolution Methods

Troubleshooting Steps

01

Review Power State Details in Event Viewer

Start by examining the specific power transition details in Event Viewer to understand what triggered the state change.

  1. Open Event Viewer by pressing Win + R, typing eventvwr.msc, and pressing Enter
  2. Navigate to Windows LogsSystem
  3. Filter the log by clicking Filter Current Log in the Actions pane
  4. Enter 4946 in the Event IDs field and click OK
  5. Double-click on recent Event ID 4946 entries to view detailed information
  6. Examine the General tab for power state transition details including source state, target state, and transition reason
  7. Check the Details tab for additional XML data containing timing information and system context

Use PowerShell to query multiple events efficiently:

Get-WinEvent -FilterHashtable @{LogName='System'; Id=4946} -MaxEvents 20 | Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrap
Pro tip: Look for patterns in the transition times and reasons to identify whether power state changes are user-initiated, policy-driven, or caused by external factors.
02

Analyze Power Management Configuration

Investigate the current power management settings to understand why specific transitions are occurring.

  1. Open Command Prompt as Administrator
  2. Run the following command to display current power configuration:
powercfg /query
  1. Review sleep and hibernation settings with:
powercfg /availablesleepstates
powercfg /sleepstudy
  1. Check which devices can wake the system:
powercfg /devicequery wake_armed
  1. Generate a detailed power efficiency report:
powercfg /energy /output C:\PowerReport.html
  1. For Windows 11 systems, check Modern Standby capability:
powercfg /systempowerreport
  1. Review the generated reports to identify power management issues or unexpected wake sources
Warning: Changes to power management settings can affect system stability and user experience. Test modifications in a controlled environment first.
03

Correlate with System Performance and Application Events

Cross-reference Event ID 4946 with other system events to identify the root cause of power state issues.

  1. Use PowerShell to gather related power events from multiple sources:
$StartTime = (Get-Date).AddDays(-7)
$PowerEvents = Get-WinEvent -FilterHashtable @{
    LogName='System'
    Id=1,6,42,4946,4947
    StartTime=$StartTime
} | Sort-Object TimeCreated

$PowerEvents | Format-Table TimeCreated, Id, ProviderName, LevelDisplayName, Message -Wrap
  1. Check for application-related wake events in the Application log:
Get-WinEvent -FilterHashtable @{LogName='Application'; StartTime=$StartTime} | Where-Object {$_.Message -like '*wake*' -or $_.Message -like '*power*'} | Format-Table TimeCreated, ProviderName, Message -Wrap
  1. Examine wake source information using:
powercfg /waketimers
powercfg /requests
  1. For detailed wake source analysis, check the PowerShell event log:
Get-WinEvent -LogName 'Microsoft-Windows-Power-Troubleshooter/Operational' -MaxEvents 50 | Format-Table TimeCreated, Id, Message -Wrap
  1. Create a timeline correlation script to match power events with system activity:
$Events = Get-WinEvent -FilterHashtable @{LogName='System'; Id=4946; StartTime=(Get-Date).AddHours(-24)}
foreach ($Event in $Events) {
    $EventTime = $Event.TimeCreated
    Write-Host "Power Event at $EventTime"
    $RelatedEvents = Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=$EventTime.AddMinutes(-5); EndTime=$EventTime.AddMinutes(5)} | Where-Object {$_.Id -ne 4946}
    $RelatedEvents | Format-Table Id, TimeCreated, Message -Wrap
}
04

Advanced Power State Monitoring and Registry Analysis

Implement comprehensive monitoring and examine registry settings that control power management behavior.

  1. Enable advanced power management logging by modifying registry settings:
$RegPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\Power'
Set-ItemProperty -Path $RegPath -Name 'EventProcessorEnabled' -Value 1 -Type DWord
Set-ItemProperty -Path $RegPath -Name 'CsEnabled' -Value 1 -Type DWord
  1. Check critical power management registry keys:
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power' | Format-List
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power' | Format-List
  1. Create a comprehensive power event monitoring script:
Register-WmiEvent -Query "SELECT * FROM Win32_PowerManagementEvent" -Action {
    $Event = $Event.SourceEventArgs.NewEvent
    $LogEntry = "$(Get-Date): Power Management Event - Type: $($Event.EventType)"
    Add-Content -Path 'C:\PowerMonitoring.log' -Value $LogEntry
}

# Monitor for 24 hours
Start-Sleep -Seconds 86400
Get-EventSubscriber | Unregister-Event
  1. Analyze Modern Standby configuration on Windows 11:
$ModernStandby = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power' -Name 'PlatformAoAcOverride' -ErrorAction SilentlyContinue
if ($ModernStandby) {
    Write-Host "Modern Standby Status: $($ModernStandby.PlatformAoAcOverride)"
} else {
    Write-Host "Traditional S3 Sleep Mode"
}
  1. Generate a detailed power transition report:
$PowerEvents = Get-WinEvent -FilterHashtable @{LogName='System'; Id=4946} -MaxEvents 100
$Report = $PowerEvents | ForEach-Object {
    [PSCustomObject]@{
        Time = $_.TimeCreated
        Message = $_.Message
        Level = $_.LevelDisplayName
        ProcessId = $_.ProcessId
        ThreadId = $_.ThreadId
    }
}
$Report | Export-Csv -Path 'C:\PowerTransitionReport.csv' -NoTypeInformation
Pro tip: Use Windows Performance Toolkit (WPT) for advanced power state analysis in enterprise environments where detailed tracing is required.
05

Enterprise-Level Power Management Troubleshooting

Deploy comprehensive power management monitoring and troubleshooting for enterprise environments.

  1. Create a Group Policy-deployable PowerShell script for organization-wide power monitoring:
# PowerManagementMonitor.ps1
$LogPath = "C:\Logs\PowerManagement_$(Get-Date -Format 'yyyyMMdd').log"
$null = New-Item -Path (Split-Path $LogPath) -ItemType Directory -Force -ErrorAction SilentlyContinue

function Write-PowerLog {
    param($Message)
    $Timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
    "$Timestamp - $Message" | Add-Content -Path $LogPath
}

# Monitor power events
$Action = {
    $Event = $Event.SourceEventArgs.NewEvent
    Write-PowerLog "Event ID 4946: Power state transition detected"
    
    # Collect system context
    $SystemInfo = @{
        ComputerName = $env:COMPUTERNAME
        UserName = $env:USERNAME
        PowerScheme = (powercfg /getactivescheme).Split('(')[1].Split(')')[0]
        BatteryStatus = (Get-WmiObject -Class Win32_Battery | Select-Object -ExpandProperty BatteryStatus -ErrorAction SilentlyContinue)
    }
    
    Write-PowerLog "System Context: $($SystemInfo | ConvertTo-Json -Compress)"
}

Register-WmiEvent -Query "SELECT * FROM Win32_PowerManagementEvent" -Action $Action
  1. Implement centralized logging using Windows Event Forwarding:
wecutil cs PowerManagementSubscription.xml
  1. Create a subscription configuration file (PowerManagementSubscription.xml):
<Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
    <SubscriptionId>PowerManagementEvents</SubscriptionId>
    <Description>Forward power management events</Description>
    <Query>
        <![CDATA[
        <QueryList>
            <Query Id="0">
                <Select Path="System">*[System[EventID=4946]]</Select>
            </Query>
        </QueryList>
        ]]>
    </Query>
</Subscription>
  1. Deploy automated power state analysis using Task Scheduler:
$TaskAction = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-File C:\Scripts\PowerAnalysis.ps1'
$TaskTrigger = New-ScheduledTaskTrigger -Daily -At '06:00AM'
$TaskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'PowerManagementAnalysis' -Action $TaskAction -Trigger $TaskTrigger -Settings $TaskSettings -User 'SYSTEM'
  1. Generate executive summary reports for power management compliance:
# PowerManagementReport.ps1
$StartDate = (Get-Date).AddDays(-30)
$PowerEvents = Get-WinEvent -FilterHashtable @{LogName='System'; Id=4946; StartTime=$StartDate}

$Summary = @{
    TotalTransitions = $PowerEvents.Count
    AveragePerDay = [math]::Round($PowerEvents.Count / 30, 2)
    MostActiveHour = ($PowerEvents | Group-Object {$_.TimeCreated.Hour} | Sort-Object Count -Descending | Select-Object -First 1).Name
    SystemUptime = (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime
}

$Summary | ConvertTo-Json | Out-File 'C:\Reports\PowerManagementSummary.json'
Warning: Enterprise monitoring solutions should be tested thoroughly before deployment to avoid performance impact on production systems.

Overview

Event ID 4946 from the Microsoft-Windows-Kernel-Power source fires during system power state transitions in Windows environments. This event logs when the system changes power states, including transitions to sleep (S3), hibernation (S4), hybrid sleep, or when resuming from these states. The event provides crucial information about power management operations and is essential for troubleshooting power-related issues in modern Windows systems.

This event appears in the System log and contains detailed information about the power transition, including the previous and new power states, transition reason, and timing information. System administrators rely on this event to track power management behavior, diagnose unexpected shutdowns, investigate wake-from-sleep issues, and monitor power efficiency in enterprise environments.

The event becomes particularly important when troubleshooting systems that fail to enter sleep states properly, experience unexpected wake events, or have issues resuming from power-saving modes. Understanding this event helps identify hardware compatibility issues, driver problems, and configuration errors that affect system power management.

Frequently Asked Questions

What does Event ID 4946 mean and when does it appear?+
Event ID 4946 indicates a system power state transition in Windows. It appears whenever the system changes power states, such as entering sleep mode (S3), hibernation (S4), hybrid sleep, or Modern Standby states. The event also fires when resuming from these low-power states back to full operation. This event is generated by the Microsoft-Windows-Kernel-Power provider and contains detailed information about the source and target power states, transition reason, and timing data.
How can I determine what caused my system to wake up from sleep using Event ID 4946?+
While Event ID 4946 shows the power state transition, you need to correlate it with other events and use additional tools to identify wake sources. Run 'powercfg /waketimers' to see active wake timers and 'powercfg /devicequery wake_armed' to list devices that can wake the system. Check events immediately before the 4946 wake event in Event Viewer, particularly looking for network adapter events, USB device events, or scheduled task activities. The PowerShell command 'Get-WinEvent -LogName Microsoft-Windows-Power-Troubleshooter/Operational' can provide additional wake source details.
Is Event ID 4946 normal, or does it indicate a problem with my system?+
Event ID 4946 is completely normal and indicates proper power management functionality. It's an informational event that logs expected system behavior when entering or exiting power-saving states. However, if you see frequent unexpected transitions, transitions that fail to complete properly, or power state changes that don't align with your power management policies, this could indicate hardware issues, driver problems, or configuration errors. The key is analyzing the pattern and context of these events rather than their mere presence.
How do I troubleshoot systems that show Event ID 4946 but fail to enter sleep mode properly?+
Start by running 'powercfg /availablesleepstates' to verify which sleep states your hardware supports. Use 'powercfg /requests' to identify applications or services preventing sleep. Check for driver issues by running 'powercfg /energy' to generate a power efficiency report. In Event Viewer, look for error events occurring around the same time as Event ID 4946. Common causes include network adapters configured to wake the system, USB devices with wake capabilities, or applications holding power requests. Update drivers, especially for network and USB controllers, and review power management settings in Device Manager.
What's the difference between Event ID 4946 in Windows 10 versus Windows 11 regarding Modern Standby?+
In Windows 11, Event ID 4946 includes enhanced information about Modern Standby (Connected Standby) states, which weren't fully detailed in earlier Windows 10 versions. Windows 11 systems with Modern Standby capability show more granular power state information, including partial wake states where the system maintains network connectivity while in low-power mode. The event data in Windows 11 includes additional context about which components remain active during standby and provides better visibility into connected standby scenarios. You can check if your system supports Modern Standby by examining the registry key 'HKLM\SYSTEM\CurrentControlSet\Control\Power\PlatformAoAcOverride' or running 'powercfg /a' to see available sleep states.
Documentation

References (2)

Emanuel DE ALMEIDA
Written by

Emanuel DE ALMEIDA

Senior IT Journalist & Cloud Architect

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Share your thoughts and insights

You must be logged in to comment.

Loading comments...