You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WMI Win32_DiskDrive读取硬盘坞挂载硬盘时获芯片组而非硬盘信息

解决硬盘坞下Win32_DiskDrive返回芯片组而非硬盘本身信息的问题

当通过硬盘坞挂载希捷ST8000DM004时,Win32_DiskDrive会返回硬盘坞的芯片组型号(如ASMT ASM235CM),而非硬盘原生信息。以下是几种可行的解决方法:

1. 使用Win32_PhysicalMedia WMI类

Win32_PhysicalMedia专门用于获取物理介质的原始硬件信息,通常能绕过硬盘坞的封装,直接读取硬盘本身的型号和序列号。

示例查询(PowerShell)

# 替换为你的物理磁盘ID,比如\\.\PHYSICALDRIVE1
Get-CimInstance Win32_PhysicalMedia | Where-Object Tag -eq '\\.\PHYSICALDRIVE1' | Select-Object SerialNumber, Description

查询结果中的SerialNumber和Description字段会对应希捷硬盘的原生序列号和型号(如ST8000DM004)。

关联Win32_DiskDrive批量查询

如果需要批量处理多块硬盘,可以通过WMI关联查询,将Win32_DiskDrive和Win32_PhysicalMedia绑定:

Get-CimInstance Win32_DiskDrive | ForEach-Object {
    $physicalMedia = Get-CimAssociatedInstance -InputObject $_ -ResultClassName Win32_PhysicalMedia
    [PSCustomObject]@{
        DiskDriveModel = $_.Model
        PhysicalMediaModel = $physicalMedia.Description
        PhysicalMediaSerial = $physicalMedia.SerialNumber
        DeviceID = $_.DeviceID
    }
}

2. 直接发送SCSI INQUIRY指令

如果Win32_PhysicalMedia无法获取正确信息,可以直接向物理磁盘发送SCSI INQUIRY命令,这是读取硬盘原生信息的最底层方法。

核心步骤

  • 用CreateFile打开物理磁盘设备(如\\.\PHYSICALDRIVE1),需管理员权限。
  • 构造SCSI INQUIRY命令数据结构,命令码设为0x12(INQUIRY),分配至少36字节的返回缓冲区。
  • 通过DeviceIoControl发送IOCTL_SCSI_PASS_THROUGH_DIRECT控制码执行命令。
  • 解析返回数据:
    • 第0-7字节:厂商ID(Vendor ID)
    • 第8-15字节:产品ID(Product ID,即硬盘型号)
    • 第16-19字节:产品修订版本(Revision)
    • 部分硬盘的序列号需额外发送MODE SENSE或READ CAPACITY命令获取。

3. 排查硬盘坞固件兼容性

部分硬盘坞固件会屏蔽硬盘原生信息,优先显示芯片组型号。可以尝试:

  • 升级硬盘坞的官方固件,查看是否支持透传硬盘信息。
  • 更换支持硬盘信息透传的硬盘坞(如采用ASM2362等芯片的型号)。

内容的提问来源于stack exchange,提问作者Dorian V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:39:52