Mittels CrystalDiskInfo kann man schnell den Status einer Festplatte oder SSD überprüfen. Möchte man dies z.B. automatisiert via Skript oder aus der Ferne via PsExec tun, geht das ebenfalls.

Schlicht an die jeweilige Exe-Datei die Option “/CopyExit” anhängen. Beispiele:

DiskInfo32.exe /CopyExit
DiskInfo64.exe /CopyExit

Das Resultat wird in der Datei “DiskInfo.txt” im Ordner von CrystalDiskInfo gespeichert. Nachfolgend ein Auszug aus einer dieser Dateien:

----------------------------------------------------------------------------
CrystalDiskInfo 7.7.0 (C) 2008-2018 hiyohiyo
                                Crystal Dew World : https://crystalmark.info/
----------------------------------------------------------------------------

    OS : Windows 7 Professional SP1 [6.1 Build 7601] (x64)
  Date : 2018/09/18 13:39:54

-- Controller Map ----------------------------------------------------------
 + Intel(R) 8 Series/C220 Chipset Family SATA AHCI Controller [ATA]
   - INTE    SSDSC2BW120H6 SCSI Disk Device

-- Disk List ---------------------------------------------------------------
 (1) INTEL SSDSC2BW120H6 : 120,0 GB [0/0/0, pd1] - il

----------------------------------------------------------------------------
 (1) INTEL SSDSC2BW120H6
----------------------------------------------------------------------------
           Model : INTEL SSDSC2BW120H6
        Firmware : RG21
   Serial Number : xxxxxxxxxxxxxxxx
       Disk Size : 120,0 GB (8,4/120,0/120,0/120,0)
     Buffer Size : Unbekannt
     Queue Depth : 32
    # of Sectors : 234441648
   Rotation Rate : ---- (SSD)
       Interface : Serial ATA
   Major Version : ACS-3
   Minor Version : ----
   Transfer Mode : SATA/600 | SATA/600
  Power On Hours : 1854 Std.
  Power On Count : 244 mal
      Host Reads : 2867 GB
     Host Writes : 1792 GB
     NAND Writes : 41066 GB
     Temperature : 34 C (93 F)
   Health Status : Gut (85 %)
        Features : S.M.A.R.T., APM, 48bit LBA, NCQ, TRIM, DevSleep
       APM Level : 00FEh [ON]
       AAM Level : ----
    Drive Letter : C:

-- S.M.A.R.T. --------------------------------------------------------------
ID Cur Wor Thr RawValues(6) Attribute Name
05 100 100 __0 000000000000 Anz. wiederzugewiesener Sektoren
09 100 100 __0 00000000073E Betriebsstunden
0C 100 100 __0 0000000000F4 Anz. Geräte-Einschaltvorgänge
AA _85 100 _10 000000000000 Verfügbarer Reservespeicher
AB 100 100 __0 000000000000 Programmfehler
AC 100 100 __0 000000000000 Löschfehler
AE 100 100 __0 000000000005 Anz. unerwarteter Spannungsabfälle
B7 100 100 __0 000000000000 SATA Downshift Count
B8 100 100 _90 000000000000 Ende-zu-Ende-Fehlererkennungszählerstand
BB 100 100 __0 000000000000 Nicht korrigierbare Fehler
BE _34 100 __0 0012003C0022 Temperatur
C0 100 100 __0 000000000005 Unsachgemäße Ausschaltung
C7 100 100 __0 000000000000 CRC-Fehler, Anzahl
E1 100 100 __0 00000000E003 Host-Schreibvorgänge
E2 100 100 __0 00000000FFFF Indikator der Mediumabnutzung unter Arbeitslast
E3 100 100 __0 00000000003D Prozentsatz der Host-Lese-/Schreibvorgänge unter Arbeitslast
E4 100 100 __0 00000000FFFF Arbeitslastmessung
E8 _85 100 _10 000000000000 Verfügbarer Reservespeicher
E9 _79 100 __0 000000000000 Medienabnutzungsanzeiger
F1 100 100 __0 00000000E003 LBA geschrieben (gesamt)
F2 100 100 __0 00000001666B LBA gelesen (gesamt)
F9 100 100 __0 00000000A06A NAND geschrieben (gesamt)

Am interessantesten dürfte wohl “Health Status” sein.

Quelle:

Crystal Dew World – CrystalDiskInfo – Advanced Features

Update 19.03.2021

Ich konnte leider nicht klären, ob CrystalDiskInfo einen Rückgabewert (Returncode, Errorlevel) ausgibt, bislang ist dieser immer “0”. Ein defektes Laufwerk zum Testen habe ich im Moment nicht. Auf jeden Fall kann man den Bericht “DiskInfo.txt” nach dem “Health Status” oder konkreten Warnungen sowie Fehlern durchsuchen.

Als ganz simple Variante kann z.B. dies herhalten:

find /i "Health Status" < DiskInfo.txt

Als Ausgabe bekommt man dann sowas:

Health Status : Gut (100 %)
Health Status : Gut

In diesem Beispiel sind zwei Laufwerke mit dem Computer verbunden, einmal die interne SSD (“Health Status : Gut (100 %)”) und einmal eine USB-Festplatte (“Health Status : Gut”).

In der jeweiligen Sprachdatei unter “..\CdiResource\language” kann man die verfügbaren Stati rauslesen:

[DiskStatus]
GOOD=Gut
CAUTION=Vorsicht
BAD=Schlecht
UNKNOWN=Unbekannt
DISK=Festplatte

Bei meinen Tests wurde immer die “German2.lang” verwendet.

Nun könnte man das Ganze so zurechtstricken, das wenn kein “Gut” gefunden wird oder wenn konkret “Vorsicht” oder “Fehler” gefunden werden ein Alarm ausgelöst wird. Am Beispiel vom “find”-Befehl sähe dies so aus:

find /i "Health Status : Vorsicht" < DiskInfo.txt
if %errorlevel%==0 set Error=True

find /i "Health Status : Schlecht" < DiskInfo.txt
if %errorlevel%==0 set Error=True

Der Rückgabewert “0” bedeutet bei “find” immer “gefunden”, größer als “0” bedeutet “nicht gefunden”.