Erhalten HDD Seriennummern mithilfe von Powershell
Ich bin die Archivierung einer großen Anzahl von HDD ' s in meiner Firma, und ich habe ein powershell-Skript, das packt der hostname und user-Liste von einer Windows-OS-installation, und ich möchte programmatisch die Seriennummer des Laufwerks als gut. Ich habe das folgende bit von Powershell-code (größtenteils abgeschlossen), der sollte dies tun, aber es gibt eine Komplikation als gut.
$Disks = Get-WMIObject -class win32_PhysicalMedia
$SerialNumber = foreach($Disk in $Disks) {IF ($Disk.SerialNumber -ne ' WD-WCC2EAV91692') {[do something here]}}
Ich bin anschließen der Laufwerke mit einem USB-HDD-dock, und es scheint, dass, wenn der computer gestartet wird, der mit dem Laufwerk intern angeschlossen (über SATA-Kabel habe ich noch nicht getestet, extern), und dann die SerialNumber
Feld gefüllt ist. Allerdings, wenn ich es anschließen, nachdem der computer hochgefahren ist, die SerialNumber
Feld ist immer leer. Gibt es eine Möglichkeit, den computer re-scan für diese info, wenn ich die Festplatte anschließen, oder ist diese info nur erhoben, auf boot-up, zum Beispiel, indem Sie das BIOS oder sowas???
Du musst angemeldet sein, um einen Kommentar abzugeben.
AFAIK die
SerialNumber
ist optional und zur Verfügung gestellt durch den Fahrer. Also, wenn das USB-dock-Treiber ist nicht die Bereitstellung der Informationen zu Windows, dann gibt es keinen einfachen Weg, um es abzurufen.Diese thread (suchen Sie nach "Maxim Shatskih") sagt, dass
IOCTL_SCSI_PASS_THROUGH
wird unterstützt durchUSBSTOR
, so würde es möglich sein zu schreiben, oder ein Programm finden, das können die Seriennummer von einer USB angeschlossenen Laufwerk, indem Sie den entsprechenden SCSI-Befehl, um das Laufwerk (get-Modus Seite 80h).Einem Paket, das tun können, was Sie brauchen, ist
sg3_utils
für Windows (es wurde ursprünglich für Linux, aber auf Windows portiert).Ich gerade getestet, Booten Sie den computer mit der Festplatte in das USB-dock, und ich bekam das gleiche Ergebnis. Technisch ist das Seriennummer-Feld nicht leer, war aber alles null ist, anstelle der eigentlichen Seriennummer, die ist wahrscheinlich nur die gleiche Differenz. Es schien, wie kann es sein mehr Arbeit, als es Wert ist, dies zu tun als ein Teil des scripts ist (vorausgesetzt, es ist überhaupt möglich), also werde ich wahrscheinlich nur mit dem Scannen fortfahren die SN barcode in das Skript. Es ist ein zusätzlicher Schritt, aber dauert nur ein paar Sekunden.
Danke an alle für den input.