0

在 wmic 中,'-' 是特殊字符。如何使用负数进行搜索?就像

wmic volume where serialnumber=-1874012763

因为 '-' 是特殊字符,所以这个命令不起作用。

如何为 wmic 中的搜索分配负数?

4

3 回答 3

0

Win32_Volume 类中的 SerialNumber 值是一个无符号整数 (uint32),无法使用 WMIC 查询无符号整数值,因为您无法转换该值,您只能列出所有值:

wmic /namespace:\\root\cimv2 path Win32_Volume get SerialNumber /value

据我所知,您可以通过编写脚本来克服查询无符号整数值的问题。例如,使用 VBS 查询无符号整数值“-1435665788”(我的系统 C 驱动器):

Option Explicit
Const SN_VAL=-1435665788
Dim oWMI, oQRY, oItm, sComp, sMsg
sComp = "."
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & sComp & "\root\cimv2")
Set oQRY = oWMI.ExecQuery("select * from Win32_Volume") 
For Each oItm In oQRY 
  If oItm.SerialNumber = SN_VAL Then 
    MsgBox "  DriveLetter: " & oItm.DriveLetter & vbCrLf & _
           " SerialNumber: " & oItm.SerialNumber, vbOkOnly, "WMI Results"
  End If
Next 
Set oQRY = Nothing
Set oWMI = Nothing
WScript.Quit(0)

以上提示给定无符号整数值的驱动器号和序列号。希望这可以帮助 ;)

于 2012-09-15T01:20:40.720 回答
0

不确定该示例是否正确,因为根据文档,此属性是 uint32。

无论如何,为了逃避这种行为,我会尝试使用:

wmic volume where (serialnumber=-1874012763)
于 2012-09-04T09:58:58.993 回答
0

双引号的值;

wmic volume where serialnumber="-1874012763" get ...
于 2012-09-04T10:37:00.510 回答