2016-02-26 5 views
2

Я архивирую большое количество жестких дисков в своей компании, и у меня есть сценарий powershell, который захватывает имя хоста и список пользователей из установки ОС Windows, и я хотел бы программно найти серийный номер привода. У меня есть следующий бит кода Powershell (в основном завершенный), который должен это сделать, но есть и осложнение.Получить серийные номера жестких дисков с помощью Powershell

$Disks = Get-WMIObject -class win32_PhysicalMedia 
$SerialNumber = foreach($Disk in $Disks) {IF ($Disk.SerialNumber -ne '  WD-WCC2EAV91692') {[do something here]}} 

Я подключения накопителей с USB док-станция HDD, и кажется, что если компьютер загружается с диска, подключенного внутри (с помощью кабелей SATA, я не проверял, пока внешне), то SerialNumber поле заполняется. Однако, если я подключу его после загрузки компьютера, поле SerialNumber всегда будет пустым. Есть ли способ перепрограммировать компьютер для этой информации при подключении диска или эта информация собирается только при загрузке, например, BIOS или что-то в этом роде?

ответ

1

AFAIK SerialNumber не является обязательным и предоставляется водителем. Поэтому, если драйвер USB-док-станции не предоставляет информацию для Windows, тогда нет простого способа получить его.

0

Это thread (искать «Максим Шацких») говорит, что IOCTL_SCSI_PASS_THROUGH поддерживается USBSTOR, поэтому можно было бы написать или найти программу, которая может получить серийный номер от USB прилагается диск, путем передачи соответствующего SCSI команду на диск (режим получения страницы 80h).

Пакет, который может сделать то, что вам нужно, это sg3_utils для Windows (он был первоначально написан для Linux, но перенесен в Windows).

0

Я только что протестировал загрузку компьютера с жесткого диска в док-станцию ​​USB, и у меня получился такой же результат. Технически, поле SerialNumber не было пустым, но вместо фактического серийного номера было все нули, что, вероятно, было той же разницей. Кажется, что это может быть больше работы, чем это стоит сделать в рамках скрипта (если это возможно), поэтому я, скорее всего, просто продолжу сканирование штрих-кода SN в скрипт. Это дополнительный шаг, но занимает всего пару секунд.

Спасибо всем за вход.