Solid-state drives (SSDs) utilize NAND flash memory to store digital data. Unlike mechanical hard drives with magnetic platters, NAND flash memory cells experience physical degradation with every programmatic write and erase cycle. Over time, as maximum endurance thresholds (Total Bytes Written, or TBW) approach, SSDs lose retention capability and eventually switch into read-only mode to prevent catastrophic data loss.
While third-party utilities like CrystalDiskInfo provide convenient graphical summaries, enterprise environments and automated maintenance scripts require native command-line auditing. Windows 11 contains built-in PowerShell cmdlets within its native Storage module that query controller telemetry directly, reporting SSD health, temperature history, and exact wear level percentages without installing unverified software.
Querying Physical Disks with Get-PhysicalDisk
To begin auditing storage hardware, open an elevated PowerShell prompt on Windows 11:
- Right-click the Start button on the taskbar.
- Select Terminal (Admin) or PowerShell (Admin).
- Run the
Get-PhysicalDiskcmdlet to enumerate installed drives:Get-PhysicalDisk | Select-Object DeviceId, FriendlyName, MediaType, BusType, OperationalStatus, HealthStatus
Verify that your drive reports a MediaType of SSD and an OperationalStatus of OK.
Extracting Low-Level SSD Wear and Reliability Counters
The dedicated cmdlet Get-StorageReliabilityCounter queries NVMe and SATA SMART telemetry directly from the storage controller. Pipe the physical disk object into the reliability counter:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Format-List
This command outputs an exhaustive telemetry block containing crucial hardware metrics:
DeviceId : 0
Wear : 8
Temperature : 36
TemperatureMax : 62
PowerOnHours : 4820
ReadErrorsTotal : 0
ReadErrorsCorrected : 0
ReadErrorsUncorrected : 0
WriteErrorsTotal : 0
FlushLatencyMax : 18
LoadUnloadCycleCountMax : 0
Interpreting Critical SSD Health Metrics
Carefully evaluate the following attributes to determine disk longevity:
Wear(Wear Level Percentage): Indicates the percentage of estimated drive lifespan consumed. A value of8means 8% of the NAND write endurance has been used, leaving 92% remaining life. If this counter approaches90or higher, replace the drive promptly.TemperatureandTemperatureMax: Reports the current and peak historical temperatures in degrees Celsius. High-performance PCIe Gen 4 and Gen 5 NVMe drives exceeding 70°C undergo thermal throttling, reducing write throughput.ReadErrorsUncorrected: The count of uncorrectable read errors. In a healthy drive, this counter must strictly remain0. Any non-zero value indicates defective NAND blocks or failing controller channels.PowerOnHours: The cumulative lifetime operating hours of the drive.
Generating a Formatted SSD Audit Summary Report
To combine disk model names with their corresponding wear and temperature metrics in a clean, readable table:
Get-PhysicalDisk | Where-Object { $_.MediaType -eq 'SSD' } | ForEach-Object {
$disk = $_
$counter = $disk | Get-StorageReliabilityCounter
[PSCustomObject]@{
'Device ID' = $disk.DeviceId
'Model' = $disk.FriendlyName
'Bus Type' = $disk.BusType
'Wear Used (%)' = $counter.Wear
'Remaining (%)' = 100 - $counter.Wear
'Current Temp (C)'= $counter.Temperature
'Max Temp (C)' = $counter.TemperatureMax
'Uncorrected Err' = $counter.ReadErrorsUncorrected
'Status' = $disk.HealthStatus
}
} | Format-Table -AutoSize
Automating Alerts for Worn or Failing SSDs
For system administrators managing remote servers or fleet workstations, integrate a threshold check into automated monitoring pipelines:
$criticalDrives = Get-PhysicalDisk | Where-Object { $_.MediaType -eq 'SSD' } | ForEach-Object {
$counter = $_ | Get-StorageReliabilityCounter
if ($counter.Wear -gt 85 -or $counter.ReadErrorsUncorrected -gt 0) {
[PSCustomObject]@{
Disk = $_.FriendlyName
Wear = $counter.Wear
UncorrectedErrors = $counter.ReadErrorsUncorrected
}
}
}
if ($criticalDrives) {
Write-Warning "Critical storage warning detected on one or more SSDs!"
$criticalDrives | Out-String | Write-Warning
} else {
Write-Host "All solid-state drives are within healthy operating parameters." -ForegroundColor Green
}
Auditing SSD wear levels natively via PowerShell ensures predictable storage lifecycles and guards against unexpected data loss in Windows environments.