Skip to main content

Get-CrystalDiskInfo

What it does

Gathers detailed disk health and S.M.A.R.T. data to identify physically degrading hard drives and SSDs. It automatically downloads the required diagnostic tool, runs it silently, and returns a clean report.

When to use it

Use this script during hardware audits, break-fix troubleshooting, or proactive maintenance. It helps you catch failing drives before they cause data loss.

Requirements

  • PowerShell 5.1 or higher
  • Administrator privileges
  • Internet access (if using the default download source)

Default Download Behavior

If you do not provide a custom source, the script downloads the latest CrystalDiskInfo ZIP from SourceForge. The default SourceForge mirror is located in India, which some regional firewalls block. If the download fails, use the -Source parameter to point to your own hosted copy.

To avoid firewall blocks and speed up deployment, download the tool once and host it on your own network.

  1. Download the Standard Edition ZIP from the official CrystalDiskInfo site.
  2. Upload the ZIP to your internal file share, IT portal, or web server.
  3. Pass that location to the script using the -Source parameter.

Usage Examples

Run a standard health check:

$GetDiskInfo = .\Get-CrystalDiskInfo.ps1

Filter for failing drives:

$FailingDisks = $GetDiskInfo | Where-Object { $_.SMART | Where-Object -Property Problematic }

Set a custom reallocated sector threshold (HDDs only). Flags the disk as degraded only if it exceeds 50 remapped sectors:

$GetDiskInfo = .\Get-CrystalDiskInfo.ps1 -ReallocatedSector 50

Use a custom local path:

$GetDiskInfo = .\Get-CrystalDiskInfo.ps1 -Source 'C:\Tools\CrystalDiskInfo.zip'

Use a custom network (UNC) path:

$GetDiskInfo = .\Get-CrystalDiskInfo.ps1 -Source '\\fileserver\share\CrystalDiskInfo.zip'

Use a custom web URL:

$GetDiskInfo = .\Get-CrystalDiskInfo.ps1 -Source 'https://host.example.com/CrystalDiskInfo.zip'

Parameters

ParameterAliasRequiredTypeDescription
ReallocatedSectorrNointSets the maximum allowed remapped sectors before an HDD is flagged as degraded. Ignored for SSDs.
SourcesrcNostringPath or URL to the CrystalDiskInfo ZIP. Accepts local paths, UNC shares, or HTTP URLs. Falls back to the default source if omitted or if the download fails.

Understanding the Results

The script returns one object per physical disk. Each object holds standard drive details plus a SMART array. SATA and NVMe drives report health differently, so the array has two shapes.

SATA drives report a vendor grade plus the physical count. Current, Worst, and Threshold are scores from 1 to 253 where higher is better. RawValue is the physical reality, such as the exact number of bad sectors. A drive can hold a perfect grade while still hiding hundreds of bad sectors.

NVMe drives report pure physical values only. There is no grading system. Values are converted to real units such as Celsius, percent, and gigabytes.

The Problematic flag is the value to trust. It is calculated from the physical data, not from the vendor grade.

Output Property Reference

Disk object (one per physical disk)

PropertyExampleDescription
ID1Sequential index of the disk in the report
ModelSKHynix_HFS512GDE9X081NDrive model string
Firmware41730C20Firmware revision
Serial NumberFJB8N580114808H3ADrive serial number
Disk Size512.1 GBCapacity as reported by the drive
InterfaceNVM ExpressBus type, NVM Express or Serial ATA
StandardNVM Express 1.3Protocol standard, when reported
Transfer ModePCIe 3.0 x4 | PCIe 3.0 x4Current and maximum transfer mode
Rotation Rate7200 RPMPresent on spinning HDDs only
Power On Hours6020 hoursLifetime powered hours
Power On Count755 countLifetime power cycles
Host Reads61523 GBLifetime host reads, when reported
Host Writes36483 GBLifetime host writes, when reported
Temperature57 C (134 F)Current drive temperature
Health StatusGood (98 %)CrystalDiskInfo overall health verdict
FeaturesS.M.A.R.T., TRIM, VolatileWriteCacheSupported feature set
Drive LetterC: D:Letters currently assigned to the disk
SMARTArray of attribute objectsParsed S.M.A.R.T. table, see below

SMART attribute object for SATA drives

PropertyExampleDescription
ID05Attribute identifier in hex
NameReallocated Sectors CountAttribute name as reported by the drive
FormatSATAMarks the row as a SATA style attribute
Current100Normalized health score now, higher is better
Worst100Lowest normalized score ever recorded
Threshold36Vendor failure line
RawHex000000000138Raw 6 byte value as printed by CrystalDiskInfo
RawValue312Raw value converted to decimal
HumanReadable312 sectorsBest effort units, vendor-specific where the raw encoding is not reliable
StatusOKFAIL when Current is at or below Threshold, WARN when Worst is at or below Threshold, else OK
ProblematicFalseTrue when Status is not OK or a known defect counter exceeds its threshold

SMART attribute object for NVMe drives

PropertyExampleDescription
ID05Attribute identifier in hex, per the NVMe specification
NamePercentage UsedAttribute name as reported by the drive
FormatNVMeMarks the row as an NVMe style attribute
RawHex000000000002Raw 6 byte value as printed by CrystalDiskInfo
RawValue2Raw value converted to decimal
HumanReadable2 %Spec defined units, Celsius for temperatures, percent for spare and wear, GB for data units, minutes or hours for time counters, plain count otherwise
ProblematicFalseTrue when a spec failure condition is met, see below

Identify Problematic Disks

Filter the results by the Problematic flag to find degrading drives:

$FailingDisks = $GetDiskInfo | Where-Object { $_.SMART | Where-Object -Property Problematic }

An attribute is flagged Problematic when:

SATA:

  • The vendor grade falls to or below the failure threshold.
  • Pending, uncorrectable, or reported-uncorrectable sectors are above 0.
  • Reallocated sectors exceed your -ReallocatedSector value, or 0 if omitted.

NVMe:

  • Critical warning is set.
  • Available spare is at or below 10 percent.
  • Percentage used is at or above 95.
  • Media integrity errors are above 0.
  • Critical over-temperature time is above 0.

Log Files

Execution logs and error traces are saved to the working directory.

.\Get-CrystalDiskInfo-log.txt
.\Get-CrystalDiskInfo-error.txt

Changelog

2026-08-05

  • Added: Deep S.M.A.R.T. attribute parsing for both SATA and NVMe drives.
  • Added: Problematic boolean flag to instantly identify physical drive degradation, bypassing misleading vendor health scores.
  • Added: HumanReadable conversions for raw hex values (e.g., exact temperatures, gigabytes written, and sector counts).
  • Improved: Download fallback logic and SourceForge mirror handling.

2026-07-29

  • Added: -Source parameter to allow specifying a custom URL, local file path, or UNC share for the CrystalDiskInfo ZIP file.

2025-04-10

  • Initial version of the document