wmic diskdrive get serialnumber -> invalid xml output
I was getting this error on Windows 7 x86 Pro (where querying the serial number should be possible) when an external drive was connected.
This is how I fixed it:
Get the ID of each drive:
wmic diskdrive get deviceid /format:list
Parse the output and get the first ID. In my case this was
\\.\PHYSICALDRIVE0
Escape the backslashes so that the ID is
\\\\.\\PHYSICALDRIVE0
Get the serial number of the drive using its escaped ID:
wmic diskdrive where deviceid='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list
Repeat steps 2 - 4 until you have the serial numbers of all drives
Edit: The above doesn't work on my copy of Windows XP x86 Pro.
This does:
wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /format:list
You are just making a mistake usin WMIC command line, WMIC DISKDRIVE GET SerialNumber /Format /?
gives you keywords:
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
you can try :
WMIC /output:"c:\temp\serial1.xml" DISKDRIVE GET SerialNumber /Format:RAWXML
You can replace RAWXML
by one of the others formats.
this issue occurs because the XML parser treats the control characters that are included in the serial number of some drives as invalid.