Zählweise unter MS Windows bei Festplatten
Wie erkenne ich welche Platte (habe aktuell vier) defekt wäre/ist
Hi @all..
Eine meiner vier Fesplatten (alle SATA) hat sich gestern verabschiedet, nicht schlimm, uralte 160er, die quasi nur als Medium gedient hat, wenn ich Daten temporär zwischenspeichern musste.
Als solche benutzt ich die halt nicht regelmäßig, gestern ist die mir "nur" beim kopieren abgesemmelt. Fehler:
Fehlerhafter Block bei Gerät \Device\Harddisk0\D. (Sofern ich das noch richtig in Erinnerung habe).
Da diese Platte schon zwei drei mal beim booten nicht erkannt wurde oder sich auch schon ein zwei mal unter Windows selbst verabschiedet hat, war klar, dass es "nur" die" 160er getroffen haben kann.
Ich brauche jetzt keine Hilfe zu Datensicherung/Rekonstruktion, o.ä. nur folgendes würde ich gerne wissen:
WIE zählt Windows diese Festplatte intern auf oder wie könnte ich ohne expliziten Diagnoselauf (bei vier Festplatten mit gesamtkap. von 2,8 TB dauert mir das zu lange) nur Anhand der Meldung sagen: Die ist defekt ...
Kann ich anhand des Gerätemanagers oder sonstwie erkennen, welche Windows als defekt deklariert hat !?
Danke
Carsten
Hi @all..
Eine meiner vier Fesplatten (alle SATA) hat sich gestern verabschiedet, nicht schlimm, uralte 160er, die quasi nur als Medium gedient hat, wenn ich Daten temporär zwischenspeichern musste.
Als solche benutzt ich die halt nicht regelmäßig, gestern ist die mir "nur" beim kopieren abgesemmelt. Fehler:
Fehlerhafter Block bei Gerät \Device\Harddisk0\D. (Sofern ich das noch richtig in Erinnerung habe).
Da diese Platte schon zwei drei mal beim booten nicht erkannt wurde oder sich auch schon ein zwei mal unter Windows selbst verabschiedet hat, war klar, dass es "nur" die" 160er getroffen haben kann.
Ich brauche jetzt keine Hilfe zu Datensicherung/Rekonstruktion, o.ä. nur folgendes würde ich gerne wissen:
WIE zählt Windows diese Festplatte intern auf oder wie könnte ich ohne expliziten Diagnoselauf (bei vier Festplatten mit gesamtkap. von 2,8 TB dauert mir das zu lange) nur Anhand der Meldung sagen: Die ist defekt ...
Kann ich anhand des Gerätemanagers oder sonstwie erkennen, welche Windows als defekt deklariert hat !?
Danke
Carsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141559
Url: https://administrator.de/contentid/141559
Ausgedruckt am: 26.11.2024 um 02:11 Uhr
12 Kommentare
Neuester Kommentar
Hi
Windows nutzt nachdem der HAL Initiert wurde die Treiberreihenfolge wie sie die Registry vorgibt und beginnt dann jedes Blockdev Gerät zu nummerieren (0,1,2,...) danach Primäre Partitionen suchen und Buchstaben zuweisen (sofern diese unter Mounted Devices nicht nach VolID schon fest vergeben wurden) und danach Logische einzubinden.
Innerhalb der Treiber wird normal auch bei 0 begonnen (SATA oder SCSI mit LUNs) und dann vergeben. Die Darstellung in der Datenträgerverwaltung und die Eventlogs sind aber immer gleich.
Gruß
Sam
Windows nutzt nachdem der HAL Initiert wurde die Treiberreihenfolge wie sie die Registry vorgibt und beginnt dann jedes Blockdev Gerät zu nummerieren (0,1,2,...) danach Primäre Partitionen suchen und Buchstaben zuweisen (sofern diese unter Mounted Devices nicht nach VolID schon fest vergeben wurden) und danach Logische einzubinden.
Innerhalb der Treiber wird normal auch bei 0 begonnen (SATA oder SCSI mit LUNs) und dann vergeben. Die Darstellung in der Datenträgerverwaltung und die Eventlogs sind aber immer gleich.
Gruß
Sam
Hallo Carsten,
leider schreibst du nicht welche Windows-Version du nutzt.
Um die Zuordnung der Laufwerksbustaben zu den Platten aufzulisten gibt es ein schönes vbscript:
Das erzeugt bei mir diese Ausgabe:
Gruß
LotPings
PS: Ist nicht dokumentiert - Ich versuch ja selber noch es zu verstehen
leider schreibst du nicht welche Windows-Version du nutzt.
Um die Zuordnung der Laufwerksbustaben zu den Platten aufzulisten gibt es ein schönes vbscript:
strComputer = "."
Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set cDrives = oWMI.ExecQuery("SELECT * FROM Win32_DiskDrive")
For Each oDrive In cDrives
DrvLetters=""
strDeviceID = Replace(oDrive.DeviceID, "\", "\\")
Set cParts = oWMI.ExecQuery ("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & strDeviceID & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition")
For Each oPart In cParts
Set cLogDisks = oWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & oPart.DeviceID & """} WHERE AssocClass = " & "Win32_LogicalDiskToPartition")
For Each oLogDisk In cLogDisks
DrvLetters = DrvLetters & oLogDisk.DeviceID
Next
Next
wscript.echo oDrive.Index & ":" & Left(oDrive.Caption & Space(25), 25) & " : " & DrvLetters
Next
Das erzeugt bei mir diese Ausgabe:
14:43:07 D:\Test\vbs____________________
>get-Drive.vbs
0:Hitachi HDS722020ALA330 A : C:D:E:F:
1:SAMSUNG HD753LJ ATA Devic : I:J:G:
14:50:58 D:\Test\vbs____________________
Gruß
LotPings
PS: Ist nicht dokumentiert - Ich versuch ja selber noch es zu verstehen
Tja mein Beispiel mit Typenbez
waren eine 2TB Hitachi und ein 750GB Samsung.
Aber wenn das Laufwerk keine Infos herausgibt....
Zum Sammeln von weiterer Informationen zu HDs/Partitionen/LogDisks gibt es auf Basis der Scriptomatik von Microsoft VBScripte die ich nur etwas aufgehübscht habe,
den bei mir ellenlangen Beispielausdruck schenke ich uns.
Gruß
LotPings
waren eine 2TB Hitachi und ein 750GB Samsung.
Aber wenn das Laufwerk keine Infos herausgibt....
Zum Sammeln von weiterer Informationen zu HDs/Partitionen/LogDisks gibt es auf Basis der Scriptomatik von Microsoft VBScripte die ich nur etwas aufgehübscht habe,
den bei mir ellenlangen Beispielausdruck schenke ich uns.
Gruß
LotPings
'EnumDiskPartLogDisk.vbs '-------------------------------------------
'for Windows NT 4.0 WMI CORE 1.5 needed
'http://www.microsoft.com/downloads/release.asp?ReleaseID=18491
x=17
On Error Resume Next
strComputer = "."
Set objShell = CreateObject("Shell.Application")
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = _
objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
Wscript.Echo "==Win32_DiskDrive=="
For Each objItem in colItems
Wscript.Echo LJust ("SystemName:",X) & objItem.SystemName & "<<" & "<<"
Wscript.Echo LJust ("Caption:",X) & objItem.Caption & "<<"
Wscript.Echo LJust ("Compr.Method:",X) & objItem.CompressionMethod & "<<"
Wscript.Echo LJust ("Description:",X) & objItem.Description & "<<"
Wscript.Echo LJust ("DeviceID:",X) & objItem.DeviceID & "<<"
Wscript.Echo LJust ("Index:",X) & objItem.Index & "<<"
Wscript.Echo LJust ("InterfaceType:",X) & objItem.InterfaceType & "<<"
Wscript.Echo LJust ("Manufacturer:",X) & objItem.Manufacturer & "<<"
Wscript.Echo LJust ("MediaLoaded:",X) & objItem.MediaLoaded & "<<"
Wscript.Echo LJust ("MediaType:",X) & objItem.MediaType & "<<"
Wscript.Echo LJust ("Model:",X) & objItem.Model & "<<"
Wscript.Echo LJust ("Name:",X) & objItem.Name & "<<"
Wscript.Echo LJust ("Partitions:",X) & objItem.Partitions & "<<"
Wscript.Echo LJust ("PNPDeviceID:",X) & objItem.PNPDeviceID & "<<"
Wscript.Echo LJust ("SCSIBus:",X) & objItem.SCSIBus & "<<"
Wscript.Echo LJust ("SCSILogicalUnit:",X) & objItem.SCSILogicalUnit & "<<"
Wscript.Echo LJust ("SCSIPort:",X) & objItem.SCSIPort & "<<"
Wscript.Echo LJust ("SCSITargetId:",X) & objItem.SCSITargetId & "<<"
Wscript.Echo LJust ("Signature:",X) & objItem.Signature & "<<"
Wscript.Echo LJust ("Status:",X) & objItem.Status & "<<"
Wscript.Echo "----------------"
Wscript.Echo LJust ("TotalCylinders:",X) & objItem.TotalCylinders & "<<"
Wscript.Echo LJust ("TotalHeads:",X) & objItem.TotalHeads & "<<"
Wscript.Echo LJust ("TracksPerCyl.:",X) & objItem.TracksPerCylinder & "<<"
Wscript.Echo LJust ("SectorsPerTrack:",X) & objItem.SectorsPerTrack & "<<"
Wscript.Echo LJust ("TotalTracks:",X) & objItem.TotalTracks & "<<"
Wscript.Echo LJust ("TotalSectors:",X) & objItem.TotalSectors & "<<"
Wscript.Echo LJust ("BytesPerSector:",X) & objItem.BytesPerSector & "<<"
Wscript.Echo LJust ("Size :",X) & objItem.Size & "<<"
Wscript.Echo "============================================"
Next
Set colItems = _
objWMIService.ExecQuery("Select * from Win32_DiskPartition",,48)
Wscript.Echo "==Win32_DiskPartition=="
For Each objItem in colItems
Wscript.Echo LJust ("SystemName:",X) & objItem.SystemName & "<<"
Wscript.Echo LJust ("Bootable:",X) & objItem.Bootable & "<<"
Wscript.Echo LJust ("BootPartition:",X) & objItem.BootPartition & "<<"
Wscript.Echo LJust ("Caption:",X) & objItem.Caption & "<<"
Wscript.Echo LJust ("Description:",X) & objItem.Description & "<<"
Wscript.Echo LJust ("DeviceID:",X) & objItem.DeviceID & "<<"
Wscript.Echo LJust ("DiskIndex:",X) & objItem.DiskIndex & "<<"
Wscript.Echo LJust ("Index:",X) & objItem.Index & "<<"
Wscript.Echo LJust ("Name:",X) & objItem.Name & "<<"
Wscript.Echo LJust ("PrimaryPartit.:",X) & objItem.PrimaryPartition & "<<"
Wscript.Echo LJust ("Type:",X) & objItem.Type & "<<"
Wscript.Echo "----------------"
Wscript.Echo LJust ("BlockSize:",X) & objItem.BlockSize & "<<"
Wscript.Echo LJust ("NumberOfBlocks:",X) & objItem.NumberOfBlocks & "<<"
Wscript.Echo LJust ("Size:",X) & objItem.Size & " Bytes " & _
(objItem.Size / objItem.BlockSize) & " Blocks"
Wscript.Echo LJust ("StartingOffset:",X) & objItem.StartingOffset & _
" Bytes " & (objItem.StartingOffset / objItem.BlockSize) & " Blocks"
Wscript.Echo "============================================"
Next
Set colItems = _
objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48)
Wscript.Echo "==Win32_LogicalDisk=="
For Each objItem in colItems
Wscript.Echo LJust ("SystemName:",X) & objItem.SystemName & "<<"
Wscript.Echo LJust ("Caption:",X) & objItem.Caption & "<<"
Wscript.Echo LJust ("VolumeName:",X) & objItem.VolumeName & "<<"
Wscript.Echo LJust ("Compressed:",X) & objItem.Compressed & "<<"
Wscript.Echo LJust ("Description:",X) & objItem.Description & "<<"
Wscript.Echo LJust ("DeviceID:",X) & objItem.DeviceID & "<<"
Wscript.Echo LJust ("DriveType:",X) & objItem.DriveType & "<<"
Wscript.Echo LJust ("FileSystem:",X) & objItem.FileSystem & "<<"
Wscript.Echo LJust ("MediaType:",X) & objItem.MediaType & "<<"
Wscript.Echo LJust ("Name:",X) & objItem.Name & "<<"
Wscript.Echo LJust ("Size:",X) & objItem.Size & "<<"
Wscript.Echo LJust ("FreeSpace:",X) & objItem.FreeSpace & "<<"
Wscript.Echo LJust ("VolumeSerNum:",X) & objItem.VolumeSerialNumber & "<<"
Wscript.Echo LJust ("DrvSelfName:",X) & objShell.NameSpace(objItem.DeviceID).Self.Name & "<<"
Wscript.Echo "============================================"
Next
Function LJust(Wert, Laenge)
If len (Wert) < Laenge then
LJust=Left(Wert & Space(Laenge), Laenge)
Else
LJust=Wert
End If
end Function
'EnumDiskPartLogDisk.vbs '-------------------------------------------
Such unter CriticalDeviceDatabase; dort wird der Reihe nach (PCI Order von niedrigstem Slot bis höchsten Slot) nachgesehen und vermerkt. Externe kommen halt drauf an wie sie angeschlossen sind; SCSI, SAS, eSATA erscheinen kurzerhand wie interne; USB wird mit dem USB Treiber (sehr spät erst, da sind nahezu alle Dienste bereits dran) initiiert und dann die daranhängenden Geräte. Da die Reihenfolge immer bei Null beginnt kann es auch sein das dein Bootgerät HD5 ist während 0 ein SAS Kontroller, 3 ein IDE Gerät z.B. ist. Das ist nicht statisch (vergleichbar mit den Linux SG und SD geräten)
Gruß
Sam
Gruß
Sam
Zitat von @cardisch:
\harddisk0\A =1. Partition auf der 0. Platte (Kann ich daraus folgern, ob das eine aktive, primäre, oder sonstwie geartete
Platte ist ?!)
Nein. Das kannst du so nicht.\harddisk0\A =1. Partition auf der 0. Platte (Kann ich daraus folgern, ob das eine aktive, primäre, oder sonstwie geartete
Platte ist ?!)
\harddisk1\D = 2. Partition auf der 1. Platte...
Eher Partition mit Buchstaben D auf der 1. Platte (bzw. eig. 2. Platte)Werden die 8 MB "Partitionen" bei den XP-PC´s mitgezählt ?!?
Sind die nicht unzugeordneter Speicherplatz? Insofern also neinLaut Windows werden dort zusätzliche Partitionsinformationen bei Multipartitionsfestplatten gespeichert. Allerdings war es bis jetzt immer egal, ob ich die 8 MB später per Partition Magic angefügt habe oder nicht.
Gruß
Snow