wmic diskdrive получает серийный номер -> неверный вывод xml

Я хочу прочитать имя и серийный номер моих жестких дисков.

Я наткнулся на 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 ответа

Решение

Вы просто делаете ошибку, используя командную строку 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 одним из других форматов.

Я получал эту ошибку на Windows 7 x86 Pro (где запрос серийного номера должен быть возможен), когда был подключен внешний диск.

Вот как я это исправил:

  1. Получить идентификатор каждого диска: wmic diskdrive get deviceid /format:list

  2. Разберите вывод и получите первый идентификатор. В моем случае это было\\.\PHYSICALDRIVE0

  3. Избегайте обратной косой черты, чтобы идентификатор \\\\.\\PHYSICALDRIVE0

  4. Получите серийный номер диска, используя его экранированный идентификатор:

    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

Эта проблема возникает из-за того, что синтаксический анализатор XML рассматривает управляющие символы, включенные в серийный номер некоторых дисков, как недействительные.

Другие вопросы по тегам