這篇文章主要為大家展示了“怎么用vbs實(shí)現(xiàn)獲取電腦硬件信息”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么用vbs實(shí)現(xiàn)獲取電腦硬件信息”這篇文章吧。
創(chuàng)新互聯(lián)從2013年開(kāi)始,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元利津做網(wǎng)站,已為上家服務(wù),為利津各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220代碼一:
'******************************************************************************************* 'Version:3.1 ' 調(diào)整錯(cuò)誤處理方法,錯(cuò)誤信息輸出到LogFile文件,可以查看掃描失敗原因 ' 如果出現(xiàn)“RPC 服務(wù)器不可用”錯(cuò)誤,是因?yàn)檫h(yuǎn)程主機(jī)沒(méi)開(kā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類(lèi)檢索不到硬件或連接到Win32類(lèi)失敗; ' 原來(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 ' 檢索硬盤(pán)/顯卡/網(wǎng)卡/聲卡的過(guò)程增加 DeviceID 屬性(設(shè)備標(biāo)識(shí)符) ' 此屬性不被輸出,用于腳本內(nèi)部判斷 'Version:2.6 ' 原來(lái)輸出搜索到的第一個(gè)硬盤(pán) ' 改為輸出搜索到的第一個(gè)InterfaceType屬性為IDE的硬盤(pán)的信息 'Version:2.5 ' 增加Sort過(guò)程,排序硬件信息 'Version:2.4 ' 調(diào)整輸出信息的分類(lèi),同類(lèi)信息盡可能的只使用一個(gè)逗號(hào)分隔,以便導(dǎo)入xls后在同一列 ' 查詢(xún)到的硬件信息如果是空或0,有可能是相關(guān)驅(qū)動(dòng)不完善或未定義此信息,也可能是未安裝驅(qū)動(dòng) ' 因?yàn)閃MI查詢(xún)就代表了系統(tǒng)知道這些硬件的詳細(xì)信息,查不到信息就是系統(tǒng)不知道 ' 系統(tǒng)不知道硬件的詳細(xì)信息,代表著性能可能有所缺失,建議找個(gè)好驅(qū)動(dòng)安裝 ' 值得注意的是主板驅(qū)動(dòng) ' (為了更容易理解,此版本的升級(jí)信息被編輯過(guò)) 'Version:2.3 ' 取消2.2版增加輸出的硬盤(pán)接口類(lèi)型 ' 由于STAT也歸于IDE接口,這會(huì)導(dǎo)致誤解 ' PS:腳本只輸出搜索到的第一個(gè)硬盤(pán) 'Version:2.2 ' GetMemoryInfo過(guò)程增加MemoryType、FormFactor、TypeDetail三個(gè)屬性 ' 輸出增加內(nèi)存類(lèi)型、封裝類(lèi)型 ' 輸出增加硬盤(pán)容量、接口類(lè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類(lèi)型數(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屬性(接口名稱(chēng))為空的適配器 'Version:1.0 ' 初始版本 Option Explicit '********************************說(shuō)明開(kāi)始************************************* 'Input格式:起始IP-數(shù)量=用戶(hù)名=密碼;起始計(jì)算機(jī)名-數(shù)量=用戶(hù)名=密碼 ' 多個(gè)配置項(xiàng)用“;”隔開(kāi) '例:192.168.0.1-10指明IP范圍為192.168.0.1~192.168.0.10,支持跨網(wǎng)段 '例:PC001-10指明范圍為PC001~PC010(計(jì)算機(jī)名可以包含-號(hào)) '與指定格式不相同的,默認(rèn)為單IP[計(jì)算機(jī)名],也可以在"未掃描的計(jì)算機(jī).txt"里配置 '"硬件信息.txt"是以逗號(hào)分隔各項(xiàng)硬件信息,你需要自己導(dǎo)入XLS整理、精簡(jiǎn) '未掃描到的計(jì)算機(jī),會(huì)把機(jī)號(hào)、用戶(hù)名、密碼保存到"未掃描的計(jì)算機(jī).txt" '再次運(yùn)行腳本將只讀取"未掃描的計(jì)算機(jī).txt"里的信息(如果存在并且大小不為0) '********************************說(shuō)明結(jié)束************************************* Dim Input, InfoOutFile, LogFile '請(qǐng)按格式給Input賦值 'Input = "pc021=administrator=cylslynetbar" Input = "PC001-109=administrator=cylslynetbar;pc110-85=administrator=LYjfnetbaradmin" InfoOutFile = "硬件信息.txt" LogFile = "未掃描的計(jì)算機(jī).txt" Redim arrConfig(0) Dim WshShell, FSO, intCount1, intCount2 intCount1 = 0 intCount2 = 0 Set WshShell = WScript.CreateObject("WScript.Shell") Set FSO = WScript.Createobject("Scripting.Filesystemobject") ReadConfig WshShell.Popup "掃描過(guò)程會(huì)很慢,請(qǐng)耐心等待,完成后會(huì)給出提示",,"掃描開(kāi)始" LinkRemoteServer arrConfig Dim LenNum1, LenNum2 If intCount1 > intCount2 Then LenNum1 = 0 LenNum2 = Len(intCount1) - Len(intCount2) Else LenNum1 = Len(intCount2) - Len(intCount1) LenNum2 = 0 End If Sort InfoOutFile WshShell.Popup "掃描結(jié)果:" & _ vbCrLf & vbTab & "掃描成功:" & Space(LenNum1) & intCount1 & " 臺(tái)" & _ vbCrLf & vbTab & "掃描失敗:" & Space(LenNum2) & intCount2 & " 臺(tái)" & _ vbCrLf & "掃描失敗的電腦已做記錄,再次運(yùn)行腳本只掃描記錄里的電腦",,"掃描完成" Function ReadConfig Dim objMatches, objMatche,objLogFile, arrLog, intUBarrConfig If FSO.FileExists(LogFile) Then If FSO.GetFile(LogFile).Size = 0 Then Set objMatches = GetMatche("([^;=]+)=([^;=]+)=([^;=]+)", Input) For Each objMatche In objMatches GetConfig objMatche.SubMatches(0), objMatche.SubMatches(1), objMatche.SubMatches(2) Next If objMatches.Count = 0 Then Msgbox "配置信息格式不正確,請(qǐng)修改" WScript.Quit End If Else Set objLogFile = FSO.OpenTextFile(LogFile) Do Until objLogFile.AtEndOfStream arrLog = Split(objLogFile.ReadLine,"=") intUBarrConfig = ((Ubound(arrConfig)+1)\3+1)*3-1 Redim Preserve arrConfig(intUBarrConfig) arrConfig(intUBarrConfig-2) = arrLog(0) arrConfig(intUBarrConfig-1) = arrLog(1) arrConfig(intUBarrConfig-0) = arrLog(2) Loop End If Else Set objMatches = GetMatche("([^;=]+)=([^;=]+)=([^;=]+)", Input) For Each objMatche In objMatches GetConfig objMatche.SubMatches(0), objMatche.SubMatches(1), objMatche.SubMatches(2) Next If objMatches.Count = 0 Then Msgbox "配置信息格式不正確,請(qǐng)修改" WScript.Quit End If End If End Function '********************************************************************************* '目的:連接到遠(yuǎn)程主機(jī)的WMI命名空間 '輸入:arrArray數(shù)組,包含有計(jì)算機(jī)名[IP]、用戶(hù)名、密碼 '調(diào)用:LinkServer過(guò)程 ' 如果返回SWbemLocator對(duì)象ConnectServer方法的實(shí)例,調(diào)用OutInfo過(guò)程 ' 如果返回Err信息(字符串類(lèi)型),輸出計(jì)算機(jī)名[IP]、用戶(hù)名、密碼及錯(cuò)誤信息到LogFile文件 ' OutInfo過(guò)程 ' 如果返回Err信息(字符串類(lèi)型)輸出計(jì)算機(jī)名[IP]、用戶(hù)名、密碼及錯(cuò)誤信息到LogFile文件 '傳遞:SWbemLocator對(duì)象ConnectServer方法的實(shí)例傳遞給OutInfo過(guò)程 ' 計(jì)算機(jī)名[IP]、命名空間、用戶(hù)名、密碼傳遞給LinkServer過(guò)程 '********************************************************************************* Function LinkRemoteServer(arrArray) Dim objErrLog, E, objLinkServer, objConnection, objWbemLocator, objErr Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objErrLog = FSO.CreateTextFile(LogFile,True) For E = 0 To Ubound(arrArray) Step 3 Set objLinkServer = LinkServer(arrConfig(E),"root\cimv2",arrConfig(E+1),arrConfig(E+2)) If Err Then objErrLog.Writeline arrArray(E) & "=" & arrArray(E+1) & "=" & arrArray(E+2) & "=" & _ "錯(cuò)誤編號(hào):" & CStr(Err.Number) & _ ",錯(cuò)誤原因:" & CStr(Err.Description) & _ ",錯(cuò)誤來(lái)源:" & CStr(Err.Source) & " By LinkServer Function" intCount2 = intCount2 + 1 Err.Clear Else objErr = OutInfo(objLinkServer) If Vartype(objErr) = 8 Then objErrLog.Writeline arrArray(E) & "=" & arrArray(E+1) & "=" & arrArray(E+2) & "=" & objErr intCount2 = intCount2 + 1 End If End If Next End Function '****************************************************** '目的:輸出硬件信息 '輸入:SWbemLocator對(duì)象ConnectServer方法的實(shí)例 '調(diào)用:獲取硬件信息的GetXXXInfo過(guò)程 '傳遞:SWbemLocator對(duì)象ConnectServer方法的實(shí)例 '返回:所有調(diào)用的GetInfo過(guò)程都未返回Err對(duì)象,則返回True ' 某個(gè)GetInfo過(guò)程返回Err對(duì)象,則返回False '****************************************************** Function OutInfo(objRemote) Dim OutFile, arrInfo, strOutInfo, Tmp, A If FSO.FileExists(InfoOutFile) Then Set OutFile = FSO.OpenTextFile(InfoOutFile,8) Else Set OutFile = FSO.CreateTextFile(InfoOutFile) OutFile.Writeline "計(jì)算機(jī)名,系統(tǒng)(初裝日期),主板型號(hào)(廠商)(發(fā)行日期),CPU型號(hào)(接口類(lèi)型),外頻,L2容量(速度)," & _ "內(nèi)存總量,內(nèi)存速度(位置),內(nèi)存類(lèi)型(封裝類(lèi)型),硬盤(pán)型號(hào)(容量),顯卡型號(hào)(顯存),網(wǎng)卡,IP/MAC" End If '系統(tǒng) arrInfo = GetOSInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = arrInfo(0) & "," & arrInfo(1) & "(" & arrInfo(2) & ")," '主板 arrInfo = GetBoardInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = strOutInfo & arrInfo(0) & "(" & arrInfo(1) & ")" 'BIOS arrInfo = GetBIOSInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = strOutInfo & "(" & arrInfo(2) & ")," 'CPU arrInfo = GetCPUInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = strOutInfo & arrInfo(1) & "(" & arrInfo(8) & ")," & arrInfo(4) & "," & _ arrInfo(6) & "(" & arrInfo(7) & ")," '內(nèi)存 arrInfo = GetMemoryInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If Tmp = 0 For A = 1 To Ubound(arrInfo) Step 6 Tmp = Tmp + Cint(arrInfo(A)) Next strOutInfo = strOutInfo & arrInfo(0) & "條,共" & Tmp & "M," Tmp = "" For A = 2 To Ubound(arrInfo) Step 6 If A = Ubound(arrInfo) - 4 Then Tmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ")," Else Tmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ") " End If Next strOutInfo = strOutInfo & Tmp Tmp = "" For A = 4 To Ubound(arrInfo) Step 6 If A = Ubound(arrInfo) - 2 Then Tmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ")," Else Tmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ") " End If Next strOutInfo = strOutInfo & Tmp '硬盤(pán) Tmp = "" arrInfo = GetDiskInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If For A = 1 To Ubound(arrInfo) Step 5 If arrInfo(A+1) = "IDE" Then Tmp = arrInfo(A) & "(" & arrInfo(A+2) & "G)," Exit For End If Next If Tmp = "" Then strOutInfo = strOutInfo & "硬盤(pán)型號(hào)未檢索到," Else strOutInfo = strOutInfo & Tmp End If '顯卡 arrInfo = GetVideoInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = strOutInfo & arrInfo(0) & "(" & arrInfo(1) & "M)," '網(wǎng)卡 arrInfo = GetNetworkInfo(objRemote) If Vartype(arrInfo) = 8 Then OutInfo = arrInfo Exit Function End If strOutInfo = strOutInfo & arrInfo(1) & "," & arrInfo(2) & Space(17-Len(arrInfo(2))) & arrInfo(3) '輸出 OutFile.Writeline strOutInfo intCount1 = intCount1 + 1 OutInfo = True End Function '********************************************************* '目的:連接到遠(yuǎn)程主機(jī)的WMI命名空間 '輸入:strComputer:遠(yuǎn)程主機(jī)的計(jì)算機(jī)名或IP ' strNamespace:命令空間 ' strUserName:用戶(hù)名 ' strPassword:密碼 '返回:連接成功,返回SWbemLocator類(lèi)連接遠(yuǎn)程主機(jī)后的對(duì)象的實(shí)例 ' 連接失敗,返回錯(cuò)誤對(duì)象 '********************************************************* Function LinkServer(strComputer,strNamespace,strUserName,strPassword) Dim objWbemLocator Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Dim objConnection On Error Resume Next Set objConnection = objwbemLocator.ConnectServer _ (strComputer, strNamespace, strUserName, strPassword) If Err Then Set LinkServer = Err Exit Function End If On Error Goto 0 objConnection.Security_.ImpersonationLevel = 3 Set LinkServer = objConnection End Function '****************************************** '目的:正則表達(dá)式 '輸入:strPatrn:正則表達(dá)式模式 ' strString:要執(zhí)行正則表達(dá)式的字符串 '返回:Match對(duì)象 '****************************************** Function GetMatche(strPatrn, strString) Dim RegEx Set RegEx = New Regexp RegEx.Global = True RegEx.IgnoreCase =True RegEx.Pattern = strPatrn Set GetMatche = RegEx.Execute(strString) End Function '*************************************** '目的:2、8、16進(jìn)制轉(zhuǎn)10進(jìn)制 '輸入:strString:2、8、16進(jìn)制數(shù) ' intNum:進(jìn)制(2|8|16) '返回:10進(jìn)制數(shù) '*************************************** Function ChangeToDecimal(strString, intNum) ChangeToDecimal = 0 If Isnull(strString) Then ChangeToDecimal = 0 : Exit Function Dim A, M For A = 1 To Len(strString) M = LCase(Mid(strString, A, 1)) Select Case M Case "a" :M = 10 Case "b" :M = 11 Case "c" :M = 12 Case "d" :M = 13 Case "e" :M = 14 Case "f" :M = 15 End Select ChangeToDecimal = ChangeToDecimal + M * intNum^(Len(strString)-A) Next End Function
以上是“怎么用vbs實(shí)現(xiàn)獲取電腦硬件信息”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱(chēng)欄目:怎么用vbs實(shí)現(xiàn)獲取電腦硬件信息-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://vcdvsql.cn/article6/hsgig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、做網(wǎng)站、網(wǎng)站收錄、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容