用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第4/4頁(yè)
更新時(shí)間:2008年05月05日 22:47:50 投稿:mdxy-dxy
比較迅速的獲取硬件信息排序后的txt文件把后綴名改為csv就是表格了,精簡(jiǎn)、整理后輸出打印就OK了。
如此詳細(xì)的信息,給老板看,一定可以讓老板對(duì)你另眼相看。
即使自己看,也能發(fā)現(xiàn)很多料想不到的的信息。
'******************************************************************** '目的:獲取IDE控制器使用的訪問(wèn)受控設(shè)備的協(xié)議 '輸入:SWbemLocator對(duì)象ConnectServer方法連接到遠(yuǎn)程主機(jī)的實(shí)例 '返回:數(shù)組,上限為(IDE控制器數(shù)量*2),0=IDE控制器數(shù)量 ' 取2種屬性: ' 1 2 ' DeviceID ProtocolSupported ' 設(shè)備標(biāo)識(shí)符 控制協(xié)議 '******************************************************************** Function GetIDEProtocol(objConnection) Dim objIDEProtocol, IDEItem, Num Dim Tmp Redim arrIDE(0) Num = 0 On Error Resume Next Set objIDEProtocol = objConnection.InstancesOf("Win32_IDEController") If Err Then GetIDEProtocol = "錯(cuò)誤編號(hào):" & CStr(Err.Number) & _ ",錯(cuò)誤原因:" & CStr(Err.Description) & _ ",錯(cuò)誤來(lái)源:" & CStr(Err.Source) & " By GetIDEProtocol Function" Err.Clear On Error Goto 0 Exit Function End If Tmp = objIDEProtocol.Count If Err Then GetIDEProtocol = "錯(cuò)誤編號(hào):" & CStr(Err.Number) & _ ",錯(cuò)誤原因:" & CStr(Err.Description) & _ ",錯(cuò)誤來(lái)源:" & CStr(Err.Source) & " By GetIDEProtocol Function" Err.Clear On Error Goto 0 Exit Function End If For Each IDEItem In objIDEProtocol 'Msgbox IDEItem.DeviceID & vbCrLf & IDEItem.ProtocolSupported Num = Num + 1 Redim Preserve arrIDE(Num*2) arrIDE(Num*2-1) = IDEItem.DeviceID Select Case IDEItem.ProtocolSupported Case 1 :arrIDE(Num*2) = "Other" Case 2 :arrIDE(Num*2) = "Unknown" Case 3 :arrIDE(Num*2) = "EISA" Case 4 :arrIDE(Num*2) = "ISA" Case 5 :arrIDE(Num*2) = "PCI" Case 6 :arrIDE(Num*2) = "ATA/ATAPI" Case 7 :arrIDE(Num*2) = "Flexible Diskette" Case 8 :arrIDE(Num*2) = "1496" Case 9 :arrIDE(Num*2) = "SCSI Parallel Interface" Case 10 :arrIDE(Num*2) = "SCSI Fibre Channel Protocol" Case 11 :arrIDE(Num*2) = "SCSI Serial Bus Protocol" Case 12 :arrIDE(Num*2) = "SCSI Serial Bus Protocol-2 (1394)" Case 13 :arrIDE(Num*2) = "SCSI Serial Storage Architecture" Case 14 :arrIDE(Num*2) = "VESA" Case 15 :arrIDE(Num*2) = "PCMCIA" Case 16 :arrIDE(Num*2) = "Universal Serial Bus" Case 17 :arrIDE(Num*2) = "Parallel Protocol" Case 18 :arrIDE(Num*2) = "ESCON" Case 19 :arrIDE(Num*2) = "Diagnostic" Case 20 :arrIDE(Num*2) = "I2C" Case 21 :arrIDE(Num*2) = "Power" Case 22 :arrIDE(Num*2) = "HIPPI" Case 23 :arrIDE(Num*2) = "MultiBus" Case 24 :arrIDE(Num*2) = "VME" Case 25 :arrIDE(Num*2) = "IPI" Case 26 :arrIDE(Num*2) = "IEEE-488" Case 27 :arrIDE(Num*2) = "RS232" Case 28 :arrIDE(Num*2) = "IEEE 802.3 10BASE5" Case 29 :arrIDE(Num*2) = "IEEE 802.3 10BASE2" Case 30 :arrIDE(Num*2) = "IEEE 802.3 1BASE5" Case 31 :arrIDE(Num*2) = "IEEE 802.3 10BROAD36" Case 32 :arrIDE(Num*2) = "IEEE 802.3 100BASEVG" Case 33 :arrIDE(Num*2) = "IEEE 802.5 Token-Ring" Case 34 :arrIDE(Num*2) = "ANSI X3T9.5 FDDI" Case 35 :arrIDE(Num*2) = "MCA" Case 36 :arrIDE(Num*2) = "ESDI" Case 37 :arrIDE(Num*2) = "IDE" Case 38 :arrIDE(Num*2) = "CMD" Case 39 :arrIDE(Num*2) = "ST506" Case 40 :arrIDE(Num*2) = "DSSI" Case 41 :arrIDE(Num*2) = "QIC2" Case 42 :arrIDE(Num*2) = "Enhanced ATA/IDE" Case 43 :arrIDE(Num*2) = "AGP" Case 44 :arrIDE(Num*2) = "TWIRP (two-way infrared)" Case 45 :arrIDE(Num*2) = "FIR (fast infrared)" Case 46 :arrIDE(Num*2) = "SIR (serial infrared)" Case 47 :arrIDE(Num*2) = "IrBus" End Select Next If Err Then GetIDEProtocol = "錯(cuò)誤編號(hào):" & CStr(Err.Number) & _ ",錯(cuò)誤原因:" & CStr(Err.Description) & _ ",錯(cuò)誤來(lái)源:" & CStr(Err.Source) & " By GetIDEProtocol Function" Err.Clear On Error Goto 0 Exit Function End If If Num = 0 Then Redim Preserve arrIDE(2) End If arrIDE(0) = Num GetIDEProtocol = arrIDE On Error Goto 0 End Function '******************************************************************************************* 'Version:3.1 ' 調(diào)整錯(cuò)誤處理方法,錯(cuò)誤信息輸出到LogFile文件,可以查看掃描失敗原因 ' 如果出現(xiàn)“RPC 服務(wù)器不可用”錯(cuò)誤,是因?yàn)檫h(yuǎn)程主機(jī)沒(méi)開機(jī) ' 如果出現(xiàn)“RPC 服務(wù)器不可用”之外的錯(cuò)誤,可能是由于正在運(yùn)行的程序造成,請(qǐng)你把此信息告訴我 ' 重啟后再次掃描就可以排除非“RPC 服務(wù)器不可用。”的錯(cuò)誤 ' 如果掃描到的硬件信息為空,應(yīng)該是驅(qū)動(dòng)問(wèn)題(或BIOS不完善),請(qǐng)自行解決 'Version:3.0 ' 增加輸出BIOS的發(fā)行日期,和主板信息放在一起 'Version:2.9 ' 修正所有GetInfo過(guò)程遇錯(cuò)的處理方法,避免返回的數(shù)組上限不符合輸出要求導(dǎo)致腳本報(bào)錯(cuò)。 ' 之所以為出現(xiàn)這種情況,是因?yàn)閃in32類檢索不到硬件或連接到Win32類失??; ' 原來(lái)判斷是否出現(xiàn)Err,忽略了檢索不到硬件的情況(連接成功無(wú)Err,Count為0) ' 檢索不到硬件多數(shù)是因?yàn)轵?qū)動(dòng)沒(méi)裝好 'Version:2.8 ' 增加GetIDEProtocol過(guò)程,獲取IDE控制器使用的協(xié)議,只是增加了代碼,沒(méi)有調(diào)用 ' 計(jì)劃增加檢索其它存儲(chǔ)器控制器的過(guò)程 'Version:2.7 ' 檢索硬盤/顯卡/網(wǎng)卡/聲卡的過(guò)程增加 DeviceID 屬性(設(shè)備標(biāo)識(shí)符) ' 此屬性不被輸出,用于腳本內(nèi)部判斷 'Version:2.6 ' 原來(lái)輸出搜索到的第一個(gè)硬盤 ' 改為輸出搜索到的第一個(gè)InterfaceType屬性為IDE的硬盤的信息 'Version:2.5 ' 增加Sort過(guò)程,排序硬件信息 'Version:2.4 ' 調(diào)整輸出信息的分類,同類信息盡可能的只使用一個(gè)逗號(hào)分隔,以便導(dǎo)入xls后在同一列 ' 查詢到的硬件信息如果是空或0,有可能是相關(guān)驅(qū)動(dòng)不完善或未定義此信息,也可能是未安裝驅(qū)動(dòng) ' 因?yàn)閃MI查詢就代表了系統(tǒng)知道這些硬件的詳細(xì)信息,查不到信息就是系統(tǒng)不知道 ' 系統(tǒng)不知道硬件的詳細(xì)信息,代表著性能可能有所缺失,建議找個(gè)好驅(qū)動(dòng)安裝 ' 值得注意的是主板驅(qū)動(dòng) ' (為了更容易理解,此版本的升級(jí)信息被編輯過(guò)) 'Version:2.3 ' 取消2.2版增加輸出的硬盤接口類型 ' 由于STAT也歸于IDE接口,這會(huì)導(dǎo)致誤解 ' PS:腳本只輸出搜索到的第一個(gè)硬盤 'Version:2.2 ' GetMemoryInfo過(guò)程增加MemoryType、FormFactor、TypeDetail三個(gè)屬性 ' 輸出增加內(nèi)存類型、封裝類型 ' 輸出增加硬盤容量、接口類型 'Version:2.1 ' GetOSInfo過(guò)程增加去掉Caption屬性中帶有的逗號(hào)“,”的代碼 ' 原因:在檢測(cè)2003系統(tǒng)時(shí),讀取到的Caption屬性,帶有逗號(hào)“,” ' 這會(huì)影響輸出,因?yàn)檩敵鍪且远禾?hào)“,”為分隔符的 'Version:2.0 B5發(fā)布版 ' GetNetworkInfo過(guò)程改為使用MACAddress屬性非空、 ' Manufacturer屬性非"Microsoft"判斷網(wǎng)卡 'Version:2.0 Beta4 ' GetNetworkInfo過(guò)程使用NetConnectionStatus屬性判斷網(wǎng)絡(luò)適配器 ' NetConnectionStatus屬性表明連接狀態(tài)(2000系統(tǒng)不支持此屬性) ' 物理網(wǎng)絡(luò)適配器才具有此狀態(tài)(包括停用狀態(tài)在內(nèi)) 'Version:2.0 Beta3 ' GetNetworkInfo過(guò)程增加一個(gè)判斷 ' 忽略讀取IPAddress(0)時(shí)會(huì)產(chǎn)生Err類型數(shù)據(jù)的適配器(對(duì)戰(zhàn)平臺(tái)) 'Version:2.0 Beta2 ' GetOSInfo過(guò)程原來(lái)使用的Name、ServicePackMajorVersion屬性 ' 改為使用Caption、CSDVersion屬性 ' 所有GetInfo過(guò)程增加錯(cuò)誤處理代碼,避免正在掃描的時(shí)候 ' 腳本遇到運(yùn)行時(shí)錯(cuò)誤導(dǎo)致腳本退出 'Version:2.0 Beta1 ' 增加掃描失敗記錄,再次運(yùn)行腳本只讀取失敗記錄,忽略配置信息 'Version:1.1 ' GetNetworkInfo過(guò)程增加一個(gè)判斷 ' 忽略NetConnectionID屬性(接口名稱)為空的適配器 'Version:1.0 ' 初始版本 '*******************************************************************************************
代碼二:
Set wmi=GetObject("winmgmts:\\")Set board=wmi.instancesof("win32_baseboard")For Each b In boardmsg="主板:"&b.Manufacturer&vbTab&b.product&vbTab&Chr(13)Nextmsg=msg&Chr(13)&"---"+Chr(13)Set cpus=wmi.instancesof("win32_processor")msg=msg&"CPU 特征:"+Chr(13)For Each cpu In cpusmsg=msg+cpu.deviceid&vbTab&cpu.name&Chr(13) _&vbtab&cpu.SocketDesignation&vbtab&cpu.CurrentClockSpeed&"MHz"&vbtab&cpu.l2cachesize&"Kb_L2"&Chr(13)Nextmsg=msg&Chr(13)&"---"+Chr(13)Set mem=wmi.instancesof("win32_physicalmemory")msg=msg&"內(nèi)存容量:"+Chr(13)For Each m In memmsg=msg&m.tag&space(10)&m.capacity&+Chr(13)NextSet mem=wmi.instancesof("win32_computersystem")For Each m In memmsg=msg&"內(nèi)存總?cè)萘浚?&Round((m.totalphysicalmemory/1024^2),2)&"M"+Chr(13)Nextmsg=msg&Chr(13)&"---"+Chr(13)Set display=wmi.instancesof("Win32_videocontroller")msg=msg&"顯示系統(tǒng):"+Chr(13)For Each video In displaymsg=msg&video.deviceid&vbTab&video.name&Chr(13)Nextmsg=msg&Chr(13)&"---"+Chr(13)Set disks=wmi.instancesof("win32_diskdrive")msg=msg&"硬盤容量:"+Chr(13)For Each d In disksIf int(d.size/(1024^3))=0 Then n=Round(d.size/(1024^2),2)&"M"Elsen=Round(d.size/(1024^3),2)&"G"End Ifmsg=msg+d.deviceid&" 空間為: "&n&Chr(13)Nextmsg=msg&Chr(13)&"---"+Chr(13)MsgBox msg,0,"電腦基本特征"
效果圖:
您可能感興趣的文章:
- 用VBS控制鼠標(biāo)的實(shí)現(xiàn)代碼(獲取鼠標(biāo)坐標(biāo)、鼠標(biāo)移動(dòng)、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)右擊)
- 獲取外網(wǎng)IP并發(fā)送到指定郵箱的vbs代碼[已測(cè)]
- vbs 獲取當(dāng)前目錄的實(shí)現(xiàn)代碼
- VBS獲取當(dāng)前目錄下所有文件夾名字的代碼
- vbs獲取當(dāng)前時(shí)間日期的代碼
- vbscript獲取文件的創(chuàng)建時(shí)間、最后修改時(shí)間和最后訪問(wèn)時(shí)間的方法
- vbs中獲取腳本當(dāng)前路徑的2個(gè)方法
- 通過(guò)vbs獲取遠(yuǎn)程host文件并保存到指定目錄
- VBScript獲取CPU使用率的方法
- 使用vbs獲取雅虎匯率