HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11Reliability MonitorWMIEvent LogsTroubleshootingPowerShellGroup PolicyIntune

Reliability Monitor: the built-in view that answers "what changed before it broke"

IA
Imran Awan
21 August 2026

A user tells you their laptop "started crashing last week". You open Event Viewer. You get twelve thousand lines across two logs, sorted by time, with no way to see that the crashes began four hours after a graphics driver landed. So you give up and reimage.

Windows has shipped a view that answers exactly that question since Windows Vista. It puts application failures, Windows failures, warnings and - the part that matters - informational events for driver installs, update installs and application installs on one shared timeline. It is called Reliability Monitor. You launch it by typing perfmon /rel. Almost nobody does.

This post explains what Reliability Monitor actually aggregates, where the data physically lives, which component populates it, every documented reason it can appear empty, and how to pull the identical data with PowerShell so you can run the same correlation across a fleet instead of one machine at a time.

The short version

Reliability Monitor (perfmon /rel) is a thin graphical client over two WMI classes, Win32_ReliabilityRecords and Win32_ReliabilityStabilityMetrics, both served by the Reliability Metrics WMI Provider in RacWmiProv.dll. Those classes are readable with one Get-CimInstance call, which means you can run the same failure-versus-change correlation on every device you manage. The single documented reason the view is empty is the Group Policy setting Configure Reliability WMI Providers being Disabled - enabled by default on client Windows, disabled by default on Windows Server, and disabling it wipes the existing data within an hour. On current Windows 11 builds the old RACAgent scheduled task no longer exists at all, so the enable-the-task advice you will find online is stale.

The problem: correlation is the whole job, and Event Viewer cannot do it

Endpoint troubleshooting is almost never about finding a crash. Crashes are easy to find. The hard part is finding what changed immediately before the crash started.

That is a correlation problem. It needs two different kinds of record on one timeline. You need the failures - the crash, the hang, the bugcheck, the dirty shutdown. And you need the changes - the driver that installed, the quality update that applied, the application that a management agent reconfigured.

Event Viewer will not do this for you. The failures land in the Application log. Most of the changes land in the System log. Event Viewer can filter one channel at a time, or build a custom view across channels, but it has no concept of "show me installs and crashes side by side and highlight the gap between them". You end up exporting to CSV and doing it in Excel.

Reliability Monitor already does it. It reads both logs. It keeps only the records that bear on reliability. It classifies each one as a failure or an informational change. Then it draws them as rows on a shared day-by-day chart. Click a day and you get every failure and every install for that day in one report.

Context - what "reliability" means here. Microsoft's own term for the underlying feature is the Reliability Analysis Component, abbreviated RAC. You will see RAC in binary names (RacEngn.dll, RacWmiProv.dll), in registry keys, and in the name of the scheduled task that used to drive it. Whenever you see RAC in this post, read it as "the plumbing behind Reliability Monitor".

The reason nobody uses it is discoverability. It is not in the Start menu. It is not in Settings. It lives behind a command-line switch on perfmon, or four clicks deep in the legacy Control Panel, and the modern Windows 11 Settings app never mentions it.

Why it happens: Reliability Monitor is a WMI client and nothing says so

Before configuring anything, understand the chain. It is short, and knowing it tells you exactly where to look when the view is empty.

The chain, from event to pixel

  1. Something happens on the device. An application crashes, a driver installs, Windows Update finishes. The responsible component writes an event to the Application or System event log through the normal Windows event pipeline.
  2. The Reliability Analysis Component reads those logs. It keeps the subset of records that describe reliability, and it calculates the System Stability Index from them. The engine that does the calculation is C:\Windows\System32\RacEngn.dll. Its own file description reads "Reliability analysis metrics calculation engine".
  3. The Reliability Metrics WMI Provider, C:\Windows\System32\wbem\RacWmiProv.dll, exposes the result as two WMI classes in the Root\CIMV2 namespace. Microsoft documents both classes, the provider name, and the registration file.
  4. The Reliability Monitor user interface asks WMI for those two classes and draws the answer. That is all it does.

Step four surprises people, so it is worth being precise about how we know it. The binary that draws the view is C:\Windows\System32\werconcpl.dll. Reading the strings out of the shipped file on a Windows 11 build 26200 machine turns up the page identifier pageReliabilityView, class names such as CReliabilityView and CRacWmiQuerySink, and these two literal query strings:

Strings found inside C:\Windows\System32\werconcpl.dll
SELECT * FROM Win32_ReliabilityRecords SELECT * FROM Win32_ReliabilityStabilityMetrics # The Reliability Monitor GUI is a WMI client. These are the only two queries it makes. # Also present: pageReliabilityView, CReliabilityView, CRacStabilityIndexQuerySink, # txtRacNotRunning, txtRacNotEnoughUptime - the two banners shown when the view is empty. # OBSERVED from the shipped binary, NOT documented by Microsoft. Do not build # automation on internal symbol names; they can change in any update.

The practical consequence is large. Anything the GUI can show you, Get-CimInstance can show you. There is no hidden data path and no private store the GUI reads that you cannot. If your PowerShell query returns nothing, the GUI is showing nothing too, and the reverse holds as well.

The two classes, and exactly what each exposes

Win32_ReliabilityRecords is the event list. One instance per reliability-relevant event log record. Microsoft documents every property.

PropertyTypeWhat it gives you
TimeGenerateddatetimeUTC time the source generated the event. Key property. This is your timeline axis.
LogfilestringWhich event log the record came from. Key property. In practice Application or System.
RecordNumberuint32Record number within that log. Key property. Lets you find the same event again in Event Viewer.
SourceNamestringThe provider that wrote it, for example Application Error or MsiInstaller.
EventIdentifieruint32The event ID. Combined with SourceName this is what you classify on.
MessagestringThe rendered message exactly as Event Viewer shows it, insertion strings already substituted.
InsertionStringsstring arrayThe raw insertion strings. For a crash, element zero is the faulting image name.
ProductNamestringAssociated product name where Windows can determine one, otherwise null.
ComputerNamestringName of the computer that generated the event.
UserstringLogged-on user at the time, or null if it cannot be determined.

Win32_ReliabilityStabilityMetrics is the graph. One instance per stability calculation sample.

PropertyTypeWhat it gives you
TimeGenerateddatetimeUTC time the index was calculated. Key property.
SystemStabilityIndexreal64The index itself, from 1 (least stable) to 10 (most stable).
StartMeasurementDatedatetimeStart of the measurement window for this sample.
EndMeasurementDatedatetimeEnd of the measurement window for this sample.
RelIDstringA GUID used to correlate metrics on this computer. Microsoft documents that it is reset if an error prevents the metrics being calculated, so a changed RelID is itself a signal.

Both classes also expose a static GetRecordCount method. That is a cheap way to ask "is there any data at all" without pulling every instance across the wire.

Microsoft documents the index behaviour, and the details matter when you read a graph:

The report categories, and where each one comes from

Microsoft documents the categories the System Stability Report groups records into. Modern Windows 11 shortens the row labels on the chart, but the underlying grouping is the same.

Documented categoryWhat it tracksTypical source on Windows 11
Application FailuresAn application stopped working or stopped respondingApplication Error, Application Hang in the Application log
Windows FailuresOperating system crashes and boot failures, including the stop codeMicrosoft-Windows-WER-SystemErrorReporting, BugCheck in the System log
Miscellaneous FailuresFailures that fit nowhere else, notably unexpected shutdownsEventLog, Microsoft-Windows-Kernel-Power in the System log
Hardware FailuresDisk and memory failures, with component type and deviceDisk and WHEA providers in the System log
Software (Un)InstallsOS components, Windows updates, drivers and applications installed or removedMsiInstaller, Microsoft-Windows-WindowsUpdateClient, Microsoft-Windows-UserPnp
System Clock ChangesSignificant changes to the system time. Only appears on days one occurredTime service events in the System log
Gotcha - the Software (Un)Installs row is the whole point, and it is the row people ignore. Failures get an Error icon. Installs get an Information icon, which visually recedes. That informational row is precisely the "what changed" half of the correlation. If you only scan for red icons, you have thrown away the reason the red icons appeared.

Event Viewer: which channels and IDs actually feed the view

The two channels are stated once here. Both are classic logs, so the paths are short:

Event Viewer › Windows Logs › Application
Event Viewer › Windows Logs › System

The table below lists the providers and IDs a real Windows 11 build 26200 device returned from Win32_ReliabilityRecords over a 30-day window, with the documentation status of each stated plainly.

Source and event IDMeaningDocumentation status
MsiInstaller 1033Product installation completed, with status codeDocumented, Windows Installer event logging
MsiInstaller 1034Product removal completed, with status codeDocumented
MsiInstaller 1035Product configuration change completedDocumented
MsiInstaller 1036Patch or update installation completedDocumented
MsiInstaller 1037Patch or update removal completedDocumented
MsiInstaller 1038Reboot required, with reboot type and reason constantsDocumented
Microsoft-Windows-WindowsUpdateClient 20Update installation failure, with the error codeDocumented, WUA update installation
Microsoft-Windows-WindowsUpdateClient 19Update installation successObserved on device. The paired failure ID 20 is documented.
Microsoft-Windows-UserPnp 20001Device driver installation attempt completed. Status 0 means successDocumented, Device Installation
Microsoft-Windows-UserPnp 20003Service installed as part of a driver install. Status 0 means successDocumented, Service Installation
Application Error 1000Application crash, with faulting module, exception code and fault offsetDocumented as the application crashing event in Microsoft's crash troubleshooting guidance
Application Hang 1002Application stopped interacting with Windows and was closedObserved on device. No dedicated Microsoft reference page found.
Do not hard-code a "complete" event ID list. The set of IDs the Reliability Analysis Component ingests is not published, and the list above is what one device happened to produce. Build your classification with an explicit lookup for the IDs you care about plus a labelled fallback bucket, so a provider you have never seen shows up as unclassified rather than silently vanishing. The companion script does exactly that, and reports the unclassified count on every run.

System files and binaries in the flow

FileRole in the flow
C:\Windows\System32\perfmon.exeThe launcher. perfmon /rel is the documented switch that starts Reliability Monitor.
C:\Windows\System32\werconcpl.dllDraws the view. Contains pageReliabilityView and the two WQL queries. Also implements the command behind "Save reliability history".
C:\Windows\System32\wbem\RacWmiProv.dllThe Reliability Metrics WMI Provider. Microsoft's class documentation names this DLL explicitly.
C:\Windows\System32\wbem\RacWmiProv.mofRegisters the provider and both classes. Declares provider name ReliabilityMetricsProvider and hosting model NetworkServiceHost, so the provider runs in a WmiPrvSE.exe under NETWORK SERVICE rather than as SYSTEM.
C:\Windows\System32\RacEngn.dllCalculates the stability index. File description: "Reliability analysis metrics calculation engine".

Registry: the whole reliability surface

Two of these are switches you may need to set. The other two are internal state you should read but never write.

Shared root: HKEY_LOCAL_MACHINE\SOFTWARE
Subkey and valueType and dataWhat it does
Policies\Microsoft\Windows\Reliability Analysis\WMIWMIEnableREG_DWORD
1 = enabled, 0 = disabled
The Group Policy switch behind Configure Reliability WMI Providers. Written by RacWmiProv.admx. This is the one that empties the view.
Microsoft\Reliability Analysis\WMIWMIEnableREG_DWORD
1 = enabled
The non-policy preference read by RacWmiProv.dll. Microsoft's own article for an empty Reliability Monitor on Windows Server tells you to set this to 1.
Microsoft\Reliability Analysis\RACRacSampleNumberREG_DWORDInternal sample counter. Observed on a live device and undocumented. Read it if you are curious. Never build detection logic on it, because an undocumented value can change in any update.
Microsoft\Reliability Analysis\SysPrepkeyReferenced by RacEngn.dll for image-preparation handling. Observed as a string in the binary, not documented.

Here is what the preference side of that looks like on a real client that has never had the policy applied. Note that the WMI subkey does not exist at all, and the providers still answer:

Registry Editor - Windows 11 build 26200, no reliability GPO applied
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Reliability Analysis
  └─ RAC
      RacSampleNumber   REG_DWORD   0x02c5a115

No WMI subkey. Absent means "not configured", which is enabled on client SKUs.
RacSampleNumber is observed-and-undocumented. Illustrative value shown.

Why the view is empty: three documented causes and one stale one

Cause one, and by far the most common in enterprise: the Group Policy setting is Disabled. The policy is Configure Reliability WMI Providers. Microsoft's class documentation is explicit. The policy must be enabled to read either class. It is enabled by default on Windows client systems and disabled by default on Windows Server systems. And disabling it clears existing data within one hour. That last clause is why re-enabling it does not bring your history back.

Cause two: not enough uptime. Microsoft documents that Reliability Monitor starts showing a stability index and event detail about 24 hours after the operating system is installed. On a freshly imaged device, an empty view is correct behaviour rather than a fault. The GUI has a dedicated banner for this state - the string txtRacNotEnoughUptime inside werconcpl.dll.

Cause three, on servers and older builds: the RAC task trigger is disabled. Microsoft's article for a blank Reliability Monitor on Windows Server 2012 R2 states the cause directly. The recurring trigger on the RacTask task under \Microsoft\Windows\RAC is disabled after the task runs for the first time. The documented fix is to re-enable that trigger in Task Scheduler with Show Hidden Tasks turned on, set WMIEnable to 1 under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Reliability Analysis\WMI, and restart the computer.

Gotcha - the RACAgent advice you will find online is stale on current Windows 11. On a Windows 11 Enterprise build 26200 device I verified three independent ways that there is no \Microsoft\Windows\RAC task folder at all. Get-ScheduledTask returns nothing matching. schtasks /Query /TN "\Microsoft\Windows\RAC\RacTask" returns "The system cannot find the file specified". And the folder is absent from the Task Scheduler cache tree in the registry. The same device also has no C:\ProgramData\Microsoft\RAC directory. Yet both WMI classes returned data: 327 records and 743 stability samples. This is an observed, undocumented difference from the Windows 7 and Windows Server era. Do not write a remediation that tries to enable a task that is not there, and do not write a detection that fails a device because C:\ProgramData\Microsoft\RAC is missing.

For completeness on the historic store: the PublishedData and StateData subfolders under C:\ProgramData\Microsoft\RAC are named in a Microsoft support engineer's answer on Microsoft Q&A as the files to delete when resetting Reliability Monitor. That is a support answer rather than reference documentation, and the path does not exist on the build tested here. Treat it as historical context only.

How to verify: read the same two classes the GUI reads

Step 1: open the view by hand, once

Do this once so you know what the data looks like before you automate it. Press Win and R together, type perfmon /rel, then press Enter. The /rel switch is documented in Microsoft's perfmon command reference alongside /res, /report and /sys.

The Control Panel route reaches the same page. It is worth knowing because it is what you can walk a user through over the phone:

Control PanelSystem and SecuritySecurity and MaintenanceMaintenanceView reliability history

What you are looking at: a graph of the stability index across the top, then rows of icons per day underneath. Click any day column to load that day's report below the chart. The scroll bar at the bottom moves you outside the visible range when more than 30 days of data exist.

Step 2: confirm the providers are answering

This is the cheapest possible health check. It asks each class how many records it holds without transferring them. Run it from an elevated prompt.

PowerShell - run elevated
Invoke-CimMethod -Namespace 'root\cimv2' -ClassName 'Win32_ReliabilityRecords' -MethodName 'GetRecordCount' # Healthy: an object with RecordCount set to a positive number and ReturnValue 0. # Broken: "Access denied" means you are not elevated. Re-run as administrator. # Broken: "Invalid class" means the Reliability Metrics WMI Provider is not registered. # Empty: RecordCount 0 means the policy is Disabled, or the device has under 24h uptime. Get-CimInstance -ClassName Win32_ReliabilityStabilityMetrics | Sort-Object TimeGenerated -Descending | Select-Object -First 1 TimeGenerated, SystemStabilityIndex, RelID # Healthy: a recent TimeGenerated and an index between 1 and 10. # An index under 4 on a client device means something is failing repeatedly. # Broken: no output at all and no error means the class returned zero instances.

Step 3: check the policy and preference values

If the counts came back zero, this tells you whether policy is the reason. Reading a value that does not exist is not an error condition here. Absent means "not configured", which Microsoft documents as enabled on client SKUs.

PowerShell - run elevated
$policy = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Reliability Analysis\WMI' $pref = 'HKLM:\SOFTWARE\Microsoft\Reliability Analysis\WMI' foreach ($k in @($policy, $pref)) { if (Test-Path $k) { Get-ItemProperty $k | Select-Object PSPath, WMIEnable } else { "ABSENT: $k" } } # Healthy on a client: both ABSENT (not configured = enabled), or WMIEnable = 1. # Broken: WMIEnable = 0 on the Policies key. A GPO has switched the providers off, # and the existing data was already cleared within an hour of that policy applying.

Step 4: look at the RAC task honestly

Do this to classify the device, not to fix it. Present-and-disabled is a real fault. Absent is normal on current Windows 11.

Task Scheduler - View, then Show Hidden Tasks, must be enabled
Task Scheduler Library › Microsoft › Windows › RAC
  RacTask     (named RACAgent on Windows Vista and Windows 7)

Windows 11 build 26200: this folder does not exist. Reliability data is still collected.

Step 5: run the companion script

Steps 2 to 4 confirm the plumbing. The script does the analysis. It issues the same two queries the GUI issues, classifies every record as a failure or a change, then for each distinct failing component lists what changed in the hours before that component's first failure.

Tip - the script is deliberately read-only and fails loud. It never enables the RAC task, never sets WMIEnable, and never touches a file. It exits 0 when records were read, exits 1 when a read failed, and exits 2 when reads succeeded but the store is genuinely empty. That distinction matters. A script that printed "no failures found" after an access-denied error would tell you a device is healthy when you have simply not looked at it.
git clone https://github.com/Imran76Awan/Windows-11-Scripts.git
cd Windows-11-Scripts\reliability-monitor-event-correlation
.\Get-ReliabilityTimeline.ps1 -Days 30 -CorrelationWindowHours 24 -Top 10

Useful variations. Narrow the look-back when you know the date something broke, because a 24-hour window on a busy managed device catches dozens of irrelevant installs:

.\Get-ReliabilityTimeline.ps1 -Days 14 -CorrelationWindowHours 8
.\Get-ReliabilityTimeline.ps1 -IncludeTimeline -Top 3

The fix: guarantee the data exists, then correlate it at fleet scale

Group Policy: the only first-class control surface

The policy lives in RacWmiProv.admx, which ships in C:\Windows\PolicyDefinitions on Windows 11. Its category display name is Windows Reliability Analysis, parented under Windows Components.

Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows Reliability AnalysisConfigure Reliability WMI Providers

Console walkthrough, Group Policy Management Editor:

  1. Open Group Policy Management on a domain controller or management workstation. For a local test, run gpedit.msc instead.
  2. Right-click the organisational unit holding your devices and choose Create a GPO in this domain, and Link it here.
  3. Name it something like Endpoint - Reliability Data and click OK.
  4. Right-click the new GPO and choose Edit.
  5. Expand Computer Configuration, then Policies, then Administrative Templates.
  6. Expand Windows Components and select Windows Reliability Analysis.
  7. Double-click Configure Reliability WMI Providers.
  8. Select Enabled, then click OK.
  9. On a target device run gpupdate /target:computer /force.
  10. Confirm WMIEnable is now 1 under HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Reliability Analysis\WMI.
  11. Wait. If the policy had previously been Disabled, the historical data was already cleared and you are starting a fresh collection window.

For a local-only test the Local Group Policy Editor path is identical:

gpedit.mscComputer ConfigurationAdministrative TemplatesWindows ComponentsWindows Reliability Analysis

Intune: there is no setting for this, and that is the honest answer

No Intune Settings Catalog entry and no Policy CSP exists for Configure Reliability WMI Providers. Microsoft's ADMX_Reliability Policy CSP area exposes exactly four settings - EE_EnablePersistentTimeStamp, PCH_ReportShutdownEvents, ShutdownEventTrackerStateFile and ShutdownReason - and all four come from Reliability.admx. The reliability WMI provider policy comes from a different ADMX file, RacWmiProv.admx, and has no CSP area of its own. Because ADMX-backed policy delivery through MDM requires the CSP to expose the policy, you cannot deliver this one with a Custom OMA-URI profile either.

So what can you actually do from Intune? Three honest options, in order of preference.

Option A - do nothing, and verify. The policy is enabled by default on client Windows. On most estates the correct action is to confirm that nothing has disabled it, not to configure it. Deploy the companion script as a read-only Intune platform script and look at the results. If every device reports the providers enabled, there is nothing to configure.

Console walkthrough for deploying the read-only check:

intune.microsoft.comDevicesScripts and remediationsPlatform scripts
  1. Sign in to intune.microsoft.com.
  2. Go to Devices, then Scripts and remediations, then the Platform scripts tab.
  3. Click Add and choose Windows 10 and later.
  4. Name it Reliability data health check (read-only) and add a description saying it makes no changes.
  5. On Script settings, upload Get-ReliabilityTimeline.ps1.
  6. Set Run this script using the logged on credentials to No. The reliability classes need SYSTEM or administrator rights.
  7. Set Enforce script signature check according to your own code-signing policy.
  8. Set Run script in 64 bit PowerShell Host to Yes.
  9. Click Next, assign to a pilot device group, then Add.
  10. Review results on the pilot before widening the assignment.

Option B - Group Policy for the machines that need it. If you have Windows Server instances, or any device where the policy was explicitly disabled, use the GPO path above. Server SKUs default to disabled, so servers are where you will actually need this.

Option C - the related settings that are in the Settings Catalog. These do not turn the providers on. They do improve the quality of the unexpected-shutdown data that feeds the Miscellaneous Failures row, so they are worth knowing.

intune.microsoft.comDevicesConfigurationCreateSettings catalog
  1. Sign in to intune.microsoft.com.
  2. Go to Devices, then Configuration, then Create, then New policy.
  3. Platform: Windows 10 and later. Profile type: Settings catalog. Click Create.
  4. Name it Endpoint - Shutdown reliability data.
  5. On Configuration settings, click Add settings.
  6. In the settings picker, search for Enable Persistent Time Stamp. It sits under Administrative Templates, then System.
  7. Tick it, close the picker, and set it to Enabled. Leave the timestamp interval at the documented default of 60 seconds unless you have a reason to change it.
  8. Optionally also add Report unplanned shutdown events, found under Administrative Templates, then Windows Components, then Windows Error Reporting, then Advanced Error Reporting Settings.
  9. Click Next, assign, review and create.

The persistent timestamp is what lets Windows work out when an unexpected shutdown happened rather than only that one happened. Without it, dirty shutdowns land on the timeline with much less precision. Note the documented caveat: the feature can interfere with power settings that spin hard disks down after a period of inactivity.

Defender and endpoint security: genuinely not applicable

Nothing in this feature area touches Microsoft Defender Antivirus, Attack Surface Reduction, exploit protection, Windows Defender Application Control or the Windows Firewall. There is no Endpoint Security profile type and no ASR rule that affects reliability data collection. Reliability Monitor is a diagnostics feature, not a security feature. The only access control on it is the WMI provider policy plus normal administrator rights on the WMI namespace.

One adjacent point is worth making. Because Application Error event 1000 records the faulting module path, a reliability timeline will frequently show a security product's own DLL as the faulting module in third-party application crashes. That is correlation data, not an accusation. But it is exactly the kind of pattern this view surfaces and a single-log Event Viewer search does not.

Services and scheduled tasks: what to expect

ComponentExpected state
Windows Management Instrumentation, short name WinmgmtRunning, Automatic. Everything here fails without it.
WmiPrvSE.exe under NETWORK SERVICESpawned on demand. The MOF sets hosting model NetworkServiceHost, so the provider does not run as SYSTEM.
Windows Event Log, short name EventLogRunning, Automatic. The Application and System channels are the raw input.
\Microsoft\Windows\RAC\RacTaskPresent and Ready on Windows 7 through Windows Server 2012 R2 era builds. Absent on Windows 11 build 26200, with data collection still working.

Log files and data store paths

There is no plain-text log for this feature. The "log files" are the event log channels plus, historically, a binary store. Here is the honest picture, with the string to search for in each case.

PathWhat to look for
Event Viewer, Windows Logs, ApplicationFilter by source Application Error or MsiInstaller. Healthy install line ends "Installation completed with status: 0". Broken: any non-zero status code.
Event Viewer, Windows Logs, SystemFilter by source Microsoft-Windows-UserPnp. Healthy driver line ends "with the following status: 0". Broken: any non-zero status.
C:\ProgramData\Microsoft\RAC\StateDataHistoric RAC working state. Absent on Windows 11 build 26200.
C:\ProgramData\Microsoft\RAC\PublishedDataHistoric published store the WMI provider read. Absent on Windows 11 build 26200.

Fleet triage: the pattern that actually scales

Once you accept that the GUI is a WMI client, the fleet approach writes itself. Collect Win32_ReliabilityRecords on a schedule, ship it to a central store, and query across devices. The MSEndpointMgr walkthrough listed in the references does precisely this, with a PowerShell collector, an Azure Function and a Log Analytics workspace. It is the best worked example of the pattern in public.

Two design notes come straight from the data. First, the store is a rolling window. On the device tested here it held about 30 days and 327 records, even though Microsoft's documentation says Reliability Monitor maintains up to a year of history. Collect at least weekly or you will lose events. Second, always ship Logfile and RecordNumber alongside each record, because those two values let you go back to the original event in Event Viewer on the device when you need full detail.

Proof it worked: a real run on a Windows 11 build 26200 device

Everything below is genuine output from Get-ReliabilityTimeline.ps1 on a domain-joined Windows 11 Enterprise build 26200 device, with the host name replaced and nothing else changed. It ran identically on Windows PowerShell 5.1 and PowerShell 7.6.5, with exit code 0 on both.

First the preflight. Note what it reports and what it declines to call a fault:

Get-ReliabilityTimeline.ps1 - preflight (real run, host redacted)
Host : CONTOSO-1234 PS engine : 5.1.26100.9168 (Desktop) Window : last 30 day(s), correlation 24h before each failure -- Configure Reliability WMI Providers (the main reason the view is empty) [ INFO ] Policy key : HKLM:\SOFTWARE\Policies\Microsoft\Windows\Reliability Analysis\WMI [ OK ] WMIEnable not present. Not configured, which Microsoft documents as enabled on client SKUs. [ INFO ] Pref key : HKLM:\SOFTWARE\Microsoft\Reliability Analysis\WMI [ INFO ] WMIEnable not present on the non-policy key. Normal on a client that has never had it set. -- Legacy RAC scheduled task (\Microsoft\Windows\RAC) [ INFO ] No task exists under \Microsoft\Windows\RAC on this device. [ INFO ] This is an OBSERVATION, not a fault. On current Windows 11 builds the RAC [ INFO ] task folder is absent and the reliability WMI classes still return data. # Healthy read: policy absent or 1, and the classes return records anyway. # Broken read: WMIEnable = 0 on the Policies key, or a RacTask in state Disabled.

Then the data read and the stability index. The index tells you the shape of the month before you read a single event:

Get-ReliabilityTimeline.ps1 - WMI read and stability index (real run)
SELECT * FROM Win32_ReliabilityRecords SELECT * FROM Win32_ReliabilityStabilityMetrics [ OK ] Win32_ReliabilityRecords : 327 record(s) returned [ OK ] Win32_ReliabilityStabilityMetrics : 743 sample(s) returned [ INFO ] Actual window in store : 2026-07-23 11:30 -> 2026-08-22 00:03 [ INFO ] Span : 29.5 day(s) [ INFO ] In window : 39 failure(s), 280 change(s), 0 unclassified Date Min Avg Samples Bar (avg) 2026-08-01 7.91 8.07 24 ######################## 2026-08-05 3.11 4.12 24 ############ 2026-08-13 2.41 3.53 24 ########### 2026-08-14 2.87 3.27 24 ########## 2026-08-20 3.54 4.54 24 ############## 2026-08-21 1.15 2.69 24 ######## # The store held 29.5 days, not the "up to a year" the docs describe. Collect weekly. # Healthy: index above 7 and flat. This device fell from 8.07 to 2.69 across 20 days. # 0 unclassified means the classification map covered every provider seen. Good.

Now the part the GUI will not do for you. For each distinct failing component, the changes that landed in the hours before its first failure, with the gap in hours:

Get-ReliabilityTimeline.ps1 - correlation clusters (real run)
10 distinct failing component(s). Showing up to 10. --------------------------------------------------------------------- FAILING: LogiPluginService.exe Count : 14 (App crash x14) First : 2026-07-28 15:41:45 Last : 2026-08-20 10:45:04 Detail : Faulting application name: LogiPluginService.exe, version: 6.4.0.3079 Changes between 07-27 15:41 and the first failure at 07-28 15:41: - 21.2h Update FAILED 9WZDNCRFJBMP-MICROSOFT.WINDOWSSTORE - 6.7h App reconfigure Configuration Manager Client - 6.7h Update installed Security Intelligence Update for Micr... - 0.3h App install PowerShell 7-x64 - 0.2h Update installed 9WZDNCRFJBMP-MICROSOFT.WINDOWSSTORE --------------------------------------------------------------------- FAILING: RadeonSoftware.exe Count : 1 (App hang x1) First : 2026-08-17 16:38:02 Detail : The program RadeonSoftware.exe version 10.1.2.2026 stopped interacting Changes between 08-16 16:38 and the first failure at 08-17 16:38: - 22.7h App reconfigure Configuration Manager Client - 3.7h Update installed 9PKMKDMJCV92-MicrosoftCorporationII.W... - 0.3h Update installed 9P2B8MCSVPLN-RealtekSemiconductorCorp... # Read this as candidates, not proof. A 0.3h gap is interesting; a 22h gap is noise. # Narrow with -CorrelationWindowHours 4 when you know roughly when it broke.

And the summary, which is what you would actually ship to a central store as one row per device:

Get-ReliabilityTimeline.ps1 - summary (real run)
Records read : 327 total, 319 inside the 30-day window Failures : 39 Changes : 280 Unclassified : 0 Stability samples : 743 Reliability WMI enabled : yes RAC task present : no - normal on current Windows 11 Nothing on this device was modified. Every operation above was a read. # Exit 0 = records read. Exit 1 = a read FAILED, nothing reported. Exit 2 = store empty. # Never treat exit 1 as a healthy device. It means you have not looked, not that it is fine.
Tip - the one-liner worth memorising. When you are on a device and need the answer in five seconds, this gives you the change records in reverse time order: Get-CimInstance Win32_ReliabilityRecords | Sort-Object TimeGenerated -Descending | Select-Object -First 40 TimeGenerated, SourceName, EventIdentifier, ProductName. Scan down until you reach the day the user says it broke, then read upward.

Verified community deep-dives

Both of these were fetched and confirmed to load and to be on this topic.

SourceWhy it is worth reading
MSEndpointMgr, "Application Reliability Monitor with Log Analytics", Maurice Daly, 20 May 2022The worked fleet-scale pattern. Collects Win32_ReliabilityRecords with Get-CimInstance, ships it via an Azure Function into a Log Analytics workspace, and builds a workbook over the result. Runs the collector on a daily schedule from Intune.
HTMD Blog (anoopcnair.com), "How To Check Reliability History In Windows 11", Alok Kumar Mishra, 26 June 2025The clearest current screenshot walkthrough of the Windows 11 Control Panel route and how to read the stability chart, if you want to hand something to a service desk team.

References

Two claims in this post came from the shipped binaries and the live device rather than from documentation, and are labelled as such throughout. The first is the pair of WQL query strings inside werconcpl.dll. The second is the complete absence of the \Microsoft\Windows\RAC task folder and the C:\ProgramData\Microsoft\RAC directory on Windows 11 build 26200 while both WMI classes still return data. Both are useful. Neither should carry a production detection rule on its own.

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-ReliabilityTimeline.ps1 — Read-only Reliability Monitor triage. Builds a "what changed before it broke"
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
Windows Search finds nothing, or eats the disk: the index, its…
The Windows Search index is a real database on disk, and most search failures are a…
Windows 11
The firewall flipped to Public and broke everything: Network…
Being domain-joined does not earn you the Domain firewall profile. Windows only grants…
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…