用vbs確定計(jì)算機(jī)是否有 USB 2.0 端口的代碼
更新時(shí)間:2007年03月26日 00:00:00 作者:
問:
您好,腳本專家!有沒有辦法使用腳本來確定計(jì)算機(jī)是否有 USB 2.0 端口?
-- RD
答:
您好,RD。您熟悉電影瘋狂星期五 (Freaky Friday) 嗎,電影中母親和女兒交換了身體(及角色)?嗯,我們的這個(gè)問題中有點(diǎn)類似瘋狂星期五的東西。畢竟,在本專欄中本來應(yīng)該由“腳本專家”來幫助您。但是,此問題實(shí)際上卻幫助了一位“腳本專家”。他原來一直在嘗試測(cè)試 USB 設(shè)備(未成功),而且?guī)缀跻呀?jīng)把這項(xiàng)工作視為毫無意義。但是當(dāng)閱讀到您的問題時(shí),他心中暗想,“哎呀,對(duì)?。篣SB 1.1 和 USB 2.0”。他在 USB 1.1 插槽中一嘗試測(cè)試該設(shè)備(對(duì)照 2.0 插槽),問題馬上就解決了。
嗨,沒有人說過這個(gè)特別的“腳本專家”是天才。(編輯附注:我為此證明。)
我們欠您一份情,RD;我們?cè)撊绾螆?bào)答您呢?好主意:也許我們可以從回答您的問題開始。好的,這里有一個(gè)腳本,它很可能返回計(jì)算機(jī)上 USB 2.0 端口的數(shù)量。讓我們先看代碼,然后再解釋我們說它“很可能”返回端口數(shù)量的原因:
strComputer = "."
i = 0
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colControllers = objWMIService.ExecQuery _
("Select * From Win32_USBController")
For Each objController in colControllers
If Instr(objController.Name, "Enhanced") Then
i = i + 1
End If
Next
Wscript.Echo "No. of USB 2.0 Ports: " & i
這個(gè)腳本首先為兩個(gè)變量進(jìn)行了賦值。為變量 strComputer 賦予了點(diǎn) (.),點(diǎn)(WMI 表示法)代表本地計(jì)算機(jī)。同時(shí),為計(jì)數(shù)器變量 i 賦值 0;我們將使用此變量來作為所有找到的 USB 2.0 端口的活動(dòng)計(jì)數(shù)器。
連接到 WMI 服務(wù)后,我們使用此查詢返回所有 Win32_USBController 類的實(shí)例:
Set colControllers = objWMIService.ExecQuery _
("Select * From Win32_USBController")
在此我們?cè)O(shè)置一個(gè) For Each 循環(huán)來遍歷集合(集合當(dāng)然是代表計(jì)算機(jī)上的所有 USB 端口)中的每一項(xiàng)。遺憾的是,Win32_USBController 類不包含可告訴我們 USB 版本的屬性(如 Version),實(shí)際上,并沒有明確的方法來查看 USB 插槽的屬性并了解它是 1.1 版本還是 2.0 版本。不過,大部分 2.0 端口均在名稱中的某個(gè)位置包含 Enhanced 一詞。我們不能保證所有端口均如此,這就是我們說此腳本很可能返回計(jì)算機(jī)上 USB 2.0 端口數(shù)量的原因。但是,在辦公室里的隨機(jī)測(cè)試中,此方法似乎行得通;發(fā)現(xiàn) 2.0 插槽時(shí)它總是有類似下面的名稱:
VIA USB Enhanced Host Controller
那么,這對(duì)我們有何幫助呢?嗯,這表示我們可以使用 InStr 函數(shù)來查看 Enhanced 一詞是否出現(xiàn)在每個(gè)插槽的 Name 中:
If Instr(objController.Name, "Enhanced") Then
如果 InStr 返回值 True(從技術(shù)角度來說,如果它返回比 0 大的值),則表示在名稱中某處發(fā)現(xiàn)了 Enhanced 一詞。在這種情況下,我們會(huì)將 i 值加 1:
i = i + 1
如果 InStr 返回 0,表示找不到Enhanced 一詞怎么辦?嗯,在這種情況下,我們就進(jìn)入下一個(gè)循環(huán)并嘗試集合中的下一項(xiàng),i 值保持不變。
我們繼續(xù)進(jìn)行查詢,每次找到名稱中有 Enhanced 的 USB 插槽即增加 i 值。當(dāng)全部完成后,我們只需回顯 i 值,它將告訴我們計(jì)算機(jī)上 USB 2.0 端口的數(shù)量。
它并不一定是萬無一失的方法,但好像還管用。而且,您知道,這和您為我們做事還不一樣。
哦,對(duì)了;我們忘記了一件事。嗯,您或許喜歡巧克力?
您好,腳本專家!有沒有辦法使用腳本來確定計(jì)算機(jī)是否有 USB 2.0 端口?
-- RD
答:
您好,RD。您熟悉電影瘋狂星期五 (Freaky Friday) 嗎,電影中母親和女兒交換了身體(及角色)?嗯,我們的這個(gè)問題中有點(diǎn)類似瘋狂星期五的東西。畢竟,在本專欄中本來應(yīng)該由“腳本專家”來幫助您。但是,此問題實(shí)際上卻幫助了一位“腳本專家”。他原來一直在嘗試測(cè)試 USB 設(shè)備(未成功),而且?guī)缀跻呀?jīng)把這項(xiàng)工作視為毫無意義。但是當(dāng)閱讀到您的問題時(shí),他心中暗想,“哎呀,對(duì)?。篣SB 1.1 和 USB 2.0”。他在 USB 1.1 插槽中一嘗試測(cè)試該設(shè)備(對(duì)照 2.0 插槽),問題馬上就解決了。
嗨,沒有人說過這個(gè)特別的“腳本專家”是天才。(編輯附注:我為此證明。)
我們欠您一份情,RD;我們?cè)撊绾螆?bào)答您呢?好主意:也許我們可以從回答您的問題開始。好的,這里有一個(gè)腳本,它很可能返回計(jì)算機(jī)上 USB 2.0 端口的數(shù)量。讓我們先看代碼,然后再解釋我們說它“很可能”返回端口數(shù)量的原因:
復(fù)制代碼 代碼如下:
strComputer = "."
i = 0
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colControllers = objWMIService.ExecQuery _
("Select * From Win32_USBController")
For Each objController in colControllers
If Instr(objController.Name, "Enhanced") Then
i = i + 1
End If
Next
Wscript.Echo "No. of USB 2.0 Ports: " & i
連接到 WMI 服務(wù)后,我們使用此查詢返回所有 Win32_USBController 類的實(shí)例:
Set colControllers = objWMIService.ExecQuery _
("Select * From Win32_USBController")
在此我們?cè)O(shè)置一個(gè) For Each 循環(huán)來遍歷集合(集合當(dāng)然是代表計(jì)算機(jī)上的所有 USB 端口)中的每一項(xiàng)。遺憾的是,Win32_USBController 類不包含可告訴我們 USB 版本的屬性(如 Version),實(shí)際上,并沒有明確的方法來查看 USB 插槽的屬性并了解它是 1.1 版本還是 2.0 版本。不過,大部分 2.0 端口均在名稱中的某個(gè)位置包含 Enhanced 一詞。我們不能保證所有端口均如此,這就是我們說此腳本很可能返回計(jì)算機(jī)上 USB 2.0 端口數(shù)量的原因。但是,在辦公室里的隨機(jī)測(cè)試中,此方法似乎行得通;發(fā)現(xiàn) 2.0 插槽時(shí)它總是有類似下面的名稱:
VIA USB Enhanced Host Controller
那么,這對(duì)我們有何幫助呢?嗯,這表示我們可以使用 InStr 函數(shù)來查看 Enhanced 一詞是否出現(xiàn)在每個(gè)插槽的 Name 中:
If Instr(objController.Name, "Enhanced") Then
如果 InStr 返回值 True(從技術(shù)角度來說,如果它返回比 0 大的值),則表示在名稱中某處發(fā)現(xiàn)了 Enhanced 一詞。在這種情況下,我們會(huì)將 i 值加 1:
i = i + 1
如果 InStr 返回 0,表示找不到Enhanced 一詞怎么辦?嗯,在這種情況下,我們就進(jìn)入下一個(gè)循環(huán)并嘗試集合中的下一項(xiàng),i 值保持不變。
我們繼續(xù)進(jìn)行查詢,每次找到名稱中有 Enhanced 的 USB 插槽即增加 i 值。當(dāng)全部完成后,我們只需回顯 i 值,它將告訴我們計(jì)算機(jī)上 USB 2.0 端口的數(shù)量。
它并不一定是萬無一失的方法,但好像還管用。而且,您知道,這和您為我們做事還不一樣。
哦,對(duì)了;我們忘記了一件事。嗯,您或許喜歡巧克力?
相關(guān)文章
VBS 強(qiáng)制關(guān)閉Symantec Endpoint Protection的代碼
很多企業(yè)電腦系統(tǒng)是Windows Xp,使用Windows server 2003 來控制,其中客戶端得殺毒軟件有不少是使用 Symantec Endpoint Protection2013-01-01
用vbs產(chǎn)生的若干個(gè)隨機(jī)數(shù)并寫入到一個(gè).txt中的代碼
用vbs產(chǎn)生的若干個(gè)隨機(jī)數(shù)并寫入到一個(gè).txt中的代碼,需要的朋友可以參考下。2011-09-09
運(yùn)行vbs腳本報(bào)錯(cuò)無效字符、中文亂碼的解決方法(編碼問題)
今天在寫一個(gè)vbs的時(shí)候,發(fā)現(xiàn)中文亂碼,后來寫好代碼正常運(yùn)行的代碼壓縮一下給了同事,發(fā)現(xiàn)報(bào)無效字符,經(jīng)過驗(yàn)證后發(fā)現(xiàn)原來是編碼的問題導(dǎo)致,這里就為大家分享一下2019-12-12
使用 Iisext.vbs 添加Web服務(wù)擴(kuò)展文件的方法
這篇文章主要介紹了如何使用 iisext.vbs 在本地或遠(yuǎn)程計(jì)算機(jī)上添加 Web 服務(wù)擴(kuò)展文件,需要的朋友可以參考下2014-07-07
使用批處理文件異地備份數(shù)據(jù)庫(最近幾天的數(shù)據(jù))
數(shù)據(jù)庫異地備份對(duì)一個(gè)網(wǎng)站來說是非常必要的,這里談一下使用批處理文件對(duì)數(shù)據(jù)庫異地本份的過程2006-06-06

