2012-09-04 56 views
0

在wmic中,' - '是特殊字符。 如何使用負數進行搜索? 就像wmic命令如何使用負數進行搜索

wmic volume where serialnumber=-1874012763 

因爲 ' - ' 是sepcial字符,這個命令是不行的。

我該如何爲wmic搜索指定負數?

回答

0

從Win32_Volume類的serialNumber值是一個無符號整數(UINT32),有沒有辦法查詢使用WMIC,因爲你不能轉換值的無符號整數,你可以只列出所有值:

​​

據我所知,可以通過編寫腳本來克服對無符號整數值的查詢。例如使用VBS quering關於「-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) 

提示的驅動器號和序列號爲給定的無符號整數值。希望這可以幫助;)

+0

非常感謝^^這是非常有用的 –

0

不確定這個例子是否正確,因爲按照docs這個屬性是uint32。

反正逃避這種行爲我會嘗試使用:

wmic volume where (serialnumber=-1874012763) 
+0

這是行不通的。返回值無效查詢@@ –

+0

這是因爲這個查詢,正如我提到的* *是無效的。你能否顯示你在哪裏發現負號碼的音量?我檢查了很多主機,並且它始終如文檔所述,正面... :) – BartekB

+0

我使用此命令檢查serailnumber: wmic volume獲得serialnumber,driveletter –

0

雙引號的價值;

wmic volume where serialnumber="-1874012763" get ... 
+0

它不工作。返回值是「無效查詢」 –