使用 Powershell 获取硬盘序列号
Get HDD serial numbers using Powershell
我在我公司归档大量硬盘,我有一个 powershell 脚本,可以从 Windows OS 安装中获取主机名和用户列表,我想以编程方式还要找到驱动器的序列号。我有以下一些 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 或其他方式收集?
AFAIK SerialNumber
是可选的,由驱动程序提供。因此,如果 USB 扩展坞驱动程序没有向 Windows 提供信息,那么就没有简单的方法来检索它。
这个thread(寻找"Maxim Shatskih")说IOCTL_SCSI_PASS_THROUGH
是被USBSTOR
支持的,所以可以写出或者找一个程序来得到通过将适当的 SCSI 命令传递给驱动器(获取模式页 80h),从 USB 连接驱动器获取序列号。
sg3_utils
for Windows 的一个包可以满足您的需求(它最初是为 Linux 编写的,但已移植到 Windows)。
我刚刚测试了使用 USB 扩展坞中的 HDD 启动计算机,我得到了相同的结果。从技术上讲,SerialNumber 字段不是空白,而是全零而不是实际序列号,这可能只是相同的区别。看起来作为脚本的一部分(假设它甚至可能)做的工作可能比值得做的更多,所以我可能会继续将 SN 条形码扫描到脚本中。这是一个额外的步骤,但只需要几秒钟。
感谢大家的意见。
我在我公司归档大量硬盘,我有一个 powershell 脚本,可以从 Windows OS 安装中获取主机名和用户列表,我想以编程方式还要找到驱动器的序列号。我有以下一些 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 或其他方式收集?
AFAIK SerialNumber
是可选的,由驱动程序提供。因此,如果 USB 扩展坞驱动程序没有向 Windows 提供信息,那么就没有简单的方法来检索它。
这个thread(寻找"Maxim Shatskih")说IOCTL_SCSI_PASS_THROUGH
是被USBSTOR
支持的,所以可以写出或者找一个程序来得到通过将适当的 SCSI 命令传递给驱动器(获取模式页 80h),从 USB 连接驱动器获取序列号。
sg3_utils
for Windows 的一个包可以满足您的需求(它最初是为 Linux 编写的,但已移植到 Windows)。
我刚刚测试了使用 USB 扩展坞中的 HDD 启动计算机,我得到了相同的结果。从技术上讲,SerialNumber 字段不是空白,而是全零而不是实际序列号,这可能只是相同的区别。看起来作为脚本的一部分(假设它甚至可能)做的工作可能比值得做的更多,所以我可能会继续将 SN 条形码扫描到脚本中。这是一个额外的步骤,但只需要几秒钟。
感谢大家的意见。