【问题标题】:Get HDD serial numbers using Powershell使用 Powershell 获取硬盘序列号
【发布时间】:2016-06-10 07:36:59
【问题描述】:

我在我的公司归档大量硬盘驱动器,我有一个 powershell 脚本,可以从 Windows 操作系统安装中获取主机名和用户列表,我还想以编程方式查找驱动器的序列号。我有以下应该执行此操作的 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 或其他方式?

【问题讨论】:

    标签: powershell wmi get-wmiobject


    【解决方案1】:

    AFAIK SerialNumber 是可选的,由驱动程序提供。因此,如果 USB-dock 驱动程序没有向 Windows 提供信息,那么就没有简单的方法来检索它。

    【讨论】:

      【解决方案2】:

      这个thread(查找“Maxim Shatskih”)说IOCTL_SCSI_PASS_THROUGHUSBSTOR 支持,因此可以编写或找到可以从USB 连接驱动器获取序列号的程序,通过将适当的 SCSI 命令传递给驱动器(获取模式页面 80h)。

      适用于 Windows 的 sg3_utils 可以满足您的需求(它最初是为 Linux 编写的,但已移植到 Windows)。

      【讨论】:

        【解决方案3】:

        我刚刚测试了使用 USB 扩展坞中的硬盘启动计算机,我得到了相同的结果。从技术上讲,SerialNumber 字段不是空白的,而是全为零而不是实际的序列号,这可能只是相同的区别。作为脚本的一部分(假设它甚至可能),看起来它可能比它的价值更多的工作,所以我可能会继续将 SN 条形码扫描到脚本中。这是一个额外的步骤,但只需要几秒钟。

        感谢大家的意见。

        【讨论】:

          猜你喜欢
          • 2011-05-04
          • 2011-05-10
          • 2010-11-24
          • 2014-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-24
          • 2010-12-06
          相关资源
          最近更新 更多