guidox / Hardware

Use the Windows Memory Diagnostic and Read Its Report

TL;DR

Run **mdsched.exe**, let it restart, and read the result with **Get-WinEvent -LogName System -ProviderName Microsoft-Windows-MemoryDiagnostics-Results**. A clean pass still needs a second run.

Before you start

Requirements

  • Admin rights
  • 30 minutes of downtime
  • 10 minutes
Step by step

Instructions

01

Read the current memory configuration

The module count, speed and slot layout decide whether one pass is enough. Mixed modules from different kits are a common cause of intermittent errors.

Get-CimInstance Win32_PhysicalMemory | Select-Object BankLabel,DeviceLocator,Capacity,Speed,Manufacturer,PartNumber
Get-CimInstance Win32_PhysicalMemoryArray | Select-Object MemoryDevices,MaxCapacityEx
Get-CimInstance Win32_ComputerSystem | Select-Object TotalPhysicalMemory
02

Check for a hardware error already logged

**WHEA-Logger** events name a corrected or uncorrected machine check. If they exist, the memory test is confirmation, not the first clue.

Get-WinEvent -LogName System -MaxEvents 300 | Where-Object ProviderName -match 'WHEA|MemoryDiagnostics' | Select-Object TimeCreated,Id,ProviderName,LevelDisplayName -First 10
Get-CimInstance Win32_ComputerSystem | Select-Object TotalPhysicalMemory,Model
03

Start the test

**mdsched.exe** offers a restart now or a test at the next start. The extended test with cache off finds more, at the cost of a longer run.

mdsched.exe
# or schedule it for the next boot
Start-Process "$env:systemroot\System32\mdsched.exe"
# test screen: press T for extended, then F1 for options > cache off
04

Read the result after the reboot

The results log records passes, errors and the test type. Windows writes it even when the test finds nothing, so an empty log means the test never ran.

Get-WinEvent -LogName System -ProviderName 'Microsoft-Windows-MemoryDiagnostics-Results' -MaxEvents 5 | Select-Object TimeCreated,Id,Message | Format-List
Get-WinEvent -ListLog *Memory* | Select-Object LogName,RecordCount
Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator,Capacity,Speed
05

Isolate a failing module

One pass cannot identify which stick failed. Run the test with one module installed, then swap, until the failing slot or module is known.

# power off, remove all but one module in slot A2, retest
# repeat for the other modules and the other slots
Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator,PartNumber,SerialNumber
# note the result per slot in a text file
06

Decide what to do with the result

A single error is enough to replace a module. No errors after two extended passes with each module points elsewhere: disk, driver or power.

Get-WinEvent -LogName System -MaxEvents 500 | Where-Object Id -in 1001,1101,1201 | Select-Object TimeCreated,Id,Message -First 5
Get-PhysicalDisk | Select-Object FriendlyName,HealthStatus,OperationalStatus
Get-CimInstance Win32_BIOS | Select-Object SMBIOSBIOSVersion,ReleaseDate
Troubleshooting

Common issues

The test does not start after reboot

Fast startup or a firmware setting skipped the boot entry. Disable fast startup and start the test again.

The results log is empty

The test never ran, or it was cancelled. The boot manager shows the memory test as a temporary entry; select it manually.

The test passes but blue screens continue

Memory is not the cause. Read the dump file and check the storage and the drivers in the crash.

The machine will not boot after removing a module

The module is in the wrong slot for that configuration. Consult the mainboard manual for single-module placement, usually A2 or DIMM 1.

FAQ

Frequently asked

Is mdsched as good as Memtest86?

It is simpler and less thorough. For a suspected fault, a full pass with an external tool is worth the extra time.

How long should the test run?

At least one full pass, better two. An extended pass on 32 GB takes a few hours.

Does a clean test prove the memory is fine?

No. It rules out gross errors. Intermittent faults from heat or a bad slot can survive a single pass.

How to undo this

Nothing is changed. If you scheduled a test, cancel it in the boot menu or let it run once; the boot entry removes itself afterwards.

Changelog · 1 entry
  1. 2026-11-01
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress