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

7
我希望能够读取我的硬盘的名称和序列号。 我找到了 wmic,但是我有些困难。我想这两个命令应该可以完成任务,但我只收到以下信息:
Invalid Xml-Content. //(Translated)

wmic path win32_physicalmedia get serialnumber

或者

wmic DISKDRIVE GET SerialNumber

我也尝试了以下方法:
wmic DISKDRIVE GET SerialNumber /FORMAT:list
wmic DISKDRIVE GET SerialNumber /FORMAT:xml.xsl
wmic DISKDRIVE GET SerialNumber > c:\test.txt

有没有关于我做错了什么的想法?


解决方案:

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

WMIC /output:"c:\hdds.txt" DISKDRIVE GET PNPDeviceID,Name /Format:CSV

能够给出正确结果。

3个回答

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

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

你可以尝试:

WMIC /output:"c:\temp\serial1.xml" DISKDRIVE GET SerialNumber /Format:RAWXML

您可以通过其他格式替换RAWXML


所以 wmic diskdrive get serialnumber 产生了我需要的输出,但是我有6个不同的驱动器,它并没有告诉我哪个序列号属于哪个驱动器? - oldboy
也许你可以查看模型 WMIC DISKDRIVE GET Name,SerialNumber,model - JPBlanc
我弄清楚了如何使用 HWinfo 获取所需的信息,但如果将来需要的话。 - oldboy

3
此问题的原因是XML解析器将某些驱动器序列号中包含的控制字符视为无效。

确实如此。 有一个补丁可用于修补WMIC以解决此问题:http://support.microsoft.com/kb/2664203 - AlcubierreDrive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接