WMIC磁盘驱动器获取序列号->无效的XML输出

use*_*404 5 wmi serial-number wmic

我想读取硬盘驱动器的名称和序列号。

我偶然发现了wmic,但遇到了麻烦。我猜这两个命令应该可以解决问题,但是我只得到消息:

Invalid Xml-Content. //(Translated)

wmic path win32_physicalmedia get serialnumber
Run Code Online (Sandbox Code Playgroud)

要么

wmic DISKDRIVE GET SerialNumber
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法:

wmic DISKDRIVE GET SerialNumber /FORMAT:list
wmic DISKDRIVE GET SerialNumber /FORMAT:xml.xsl
wmic DISKDRIVE GET SerialNumber > c:\test.txt
Run Code Online (Sandbox Code Playgroud)

关于我在做什么错的任何想法吗?


解:

感谢JPBlanc,通过/?命令,我发现SerialNumber甚至不存在。我现在用

WMIC /output:"c:\hdds.txt" DISKDRIVE GET PNPDeviceID,Name /Format:CSV
Run Code Online (Sandbox Code Playgroud)

给出正确的结果。

Mat*_*aun 5

当连接外部驱动器时,我在 Windows 7 x86 Pro(应该可以查询序列号)上收到此错误。

这是我修复它的方式:

  1. 获取每个驱动器的 ID: wmic diskdrive get deviceid /format:list

  2. 解析输出并获取第一个 ID。就我而言,这是 \\.\PHYSICALDRIVE0

  3. 转义反斜杠,使 ID 为 \\\\.\\PHYSICALDRIVE0

  4. 使用转义 ID 获取驱动器的序列号:

    wmic diskdrive where deviceid='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list

  5. 重复步骤 2 - 4,直到您获得所有驱动器的序列号


编辑:以上不适用于我的 Windows XP x86 Pro 副本。

这样做:

wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list
Run Code Online (Sandbox Code Playgroud)


JPB*_*anc 4

您只是在使用 WMIC 命令行时犯了一个错误,WMIC DISKDRIVE GET SerialNumber /Format /? 为您提供了关键字:

CSV
HFORM
HTABLE
LIST
MOF
RAWXML
TABLE
VALUE
XML
htable-sortby
htable-sortby.xsl
texttablewsys
texttablewsys.xsl
wmiclimofformat
wmiclimofformat.xsl
wmiclitableformat
wmiclitableformat.xsl
wmiclitableformatnosys
wmiclitableformatnosys.xsl
wmiclivalueformat
wmiclivalueformat.xsl
Run Code Online (Sandbox Code Playgroud)

你可以试试 :

WMIC /output:"c:\temp\serial1.xml" DISKDRIVE GET SerialNumber /Format:RAWXML
Run Code Online (Sandbox Code Playgroud)

您可以替换RAWXML为其他格式之一。