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 (где запрос серийного номера должен быть возможен), когда был подключен внешний диск.
Вот как я это исправил:
Получить идентификатор каждого диска:
wmic diskdrive get deviceid /format:list
Разберите вывод и получите первый идентификатор. В моем случае это было
\\.\PHYSICALDRIVE0
Избегайте обратной косой черты, чтобы идентификатор
\\\\.\\PHYSICALDRIVE0
Получите серийный номер диска, используя его экранированный идентификатор:
wmic diskdrive where deviceid='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list
Повторите шаги 2 - 4, пока не получите серийные номера всех дисков
Изменить: выше не работает на моей копии Windows XP x86 Pro.
Это делает:
wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list
Эта проблема возникает из-за того, что синтаксический анализатор XML рассматривает управляющие символы, включенные в серийный номер некоторых дисков, как недействительные.