主頁 > 知識庫 > 用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第1/4頁

用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第1/4頁

熱門標(biāo)簽:外呼系統(tǒng)群 天津智能外呼系統(tǒng)排名 墨西哥地圖標(biāo)注app 上海辦理400電話選號 機(jī)器人打電銷適用于美業(yè)嗎 智云億呼電話機(jī)器人 龍巖400電話申請 企業(yè)400電話辦理價(jià)錢低 外呼系統(tǒng)說話聲音小怎么辦

代碼一:

'******************************************************************************************* 
 'Version:3.1 
 '   調(diào)整錯(cuò)誤處理方法,錯(cuò)誤信息輸出到LogFile文件,可以查看掃描失敗原因 
 '     如果出現(xiàn)“RPC 服務(wù)器不可用”錯(cuò)誤,是因?yàn)檫h(yuǎn)程主機(jī)沒開機(jī) 
 '     如果出現(xiàn)“RPC 服務(wù)器不可用”之外的錯(cuò)誤,可能是由于正在運(yùn)行的程序造成,請你把此信息告訴我 
 '     重啟后再次掃描就可以排除非“RPC 服務(wù)器不可用?!钡腻e(cuò)誤 
 '     如果掃描到的硬件信息為空,應(yīng)該是驅(qū)動問題(或BIOS不完善),請自行解決 
 'Version:3.0 
 '   增加輸出BIOS的發(fā)行日期,和主板信息放在一起 
 'Version:2.9 
 '   修正所有GetInfo過程遇錯(cuò)的處理方法,避免返回的數(shù)組上限不符合輸出要求導(dǎo)致腳本報(bào)錯(cuò)。 
 '     之所以為出現(xiàn)這種情況,是因?yàn)閃in32類檢索不到硬件或連接到Win32類失?。?
 '     原來判斷是否出現(xiàn)Err,忽略了檢索不到硬件的情況(連接成功無Err,Count為0) 
 '     檢索不到硬件多數(shù)是因?yàn)轵?qū)動沒裝好 
 'Version:2.8 
 '   增加GetIDEProtocol過程,獲取IDE控制器使用的協(xié)議,只是增加了代碼,沒有調(diào)用 
 '   計(jì)劃增加檢索其它存儲器控制器的過程 
 'Version:2.7 
 '   檢索硬盤/顯卡/網(wǎng)卡/聲卡的過程增加 DeviceID 屬性(設(shè)備標(biāo)識符) 
 '     此屬性不被輸出,用于腳本內(nèi)部判斷 
 'Version:2.6 
 '   原來輸出搜索到的第一個(gè)硬盤 
 '   改為輸出搜索到的第一個(gè)InterfaceType屬性為IDE的硬盤的信息 
 'Version:2.5 
 '   增加Sort過程,排序硬件信息 
 'Version:2.4 
 '   調(diào)整輸出信息的分類,同類信息盡可能的只使用一個(gè)逗號分隔,以便導(dǎo)入xls后在同一列 
 '   查詢到的硬件信息如果是空或0,有可能是相關(guān)驅(qū)動不完善或未定義此信息,也可能是未安裝驅(qū)動 
 '   因?yàn)閃MI查詢就代表了系統(tǒng)知道這些硬件的詳細(xì)信息,查不到信息就是系統(tǒng)不知道 
 '   系統(tǒng)不知道硬件的詳細(xì)信息,代表著性能可能有所缺失,建議找個(gè)好驅(qū)動安裝 
 '   值得注意的是主板驅(qū)動 
 '   (為了更容易理解,此版本的升級信息被編輯過) 
 'Version:2.3 
 '   取消2.2版增加輸出的硬盤接口類型 
 '     由于STAT也歸于IDE接口,這會導(dǎo)致誤解 
 '     PS:腳本只輸出搜索到的第一個(gè)硬盤 
 'Version:2.2 
 '   GetMemoryInfo過程增加MemoryType、FormFactor、TypeDetail三個(gè)屬性 
 '     輸出增加內(nèi)存類型、封裝類型 
 '     輸出增加硬盤容量、接口類型 
 'Version:2.1 
 '   GetOSInfo過程增加去掉Caption屬性中帶有的逗號“,”的代碼 
 '     原因:在檢測2003系統(tǒng)時(shí),讀取到的Caption屬性,帶有逗號“,” 
 '     這會影響輸出,因?yàn)檩敵鍪且远禾枴?”為分隔符的 
 'Version:2.0 B5發(fā)布版 
 '   GetNetworkInfo過程改為使用MACAddress屬性非空、 
 '     Manufacturer屬性非"Microsoft"判斷網(wǎng)卡 
 'Version:2.0 Beta4 
 '   GetNetworkInfo過程使用NetConnectionStatus屬性判斷網(wǎng)絡(luò)適配器 
 '     NetConnectionStatus屬性表明連接狀態(tài)(2000系統(tǒng)不支持此屬性) 
 '     物理網(wǎng)絡(luò)適配器才具有此狀態(tài)(包括停用狀態(tài)在內(nèi)) 
 'Version:2.0 Beta3 
 '   GetNetworkInfo過程增加一個(gè)判斷 
 '     忽略讀取IPAddress(0)時(shí)會產(chǎn)生Err類型數(shù)據(jù)的適配器(對戰(zhàn)平臺) 
 'Version:2.0 Beta2 
 '   GetOSInfo過程原來使用的Name、ServicePackMajorVersion屬性 
 '     改為使用Caption、CSDVersion屬性 
 '   所有GetInfo過程增加錯(cuò)誤處理代碼,避免正在掃描的時(shí)候 
 '     腳本遇到運(yùn)行時(shí)錯(cuò)誤導(dǎo)致腳本退出 
 'Version:2.0 Beta1 
 '   增加掃描失敗記錄,再次運(yùn)行腳本只讀取失敗記錄,忽略配置信息 
 'Version:1.1 
 '   GetNetworkInfo過程增加一個(gè)判斷 
 '     忽略NetConnectionID屬性(接口名稱)為空的適配器 
 'Version:1.0 
 '   初始版本 

 Option Explicit 
 '************************************** 
 '作 者: LZ-MyST QQ:8450919 
 'http://hi.baidu.com/lzmyst 
 'http://www.clxp.net.cn 
 'E-Mail:lzmyst@163.com 
 '你可以任意編輯、引用腳本的全部或部分代碼 
 '轉(zhuǎn)貼、引用腳本的全部或部分代碼請保留版權(quán) 
 '************************************** 
  
 '********************************說明開始************************************* 
 'Input格式:起始IP-數(shù)量=用戶名=密碼;起始計(jì)算機(jī)名-數(shù)量=用戶名=密碼 
 '       多個(gè)配置項(xiàng)用“;”隔開 
 '例:192.168.0.1-10指明IP范圍為192.168.0.1~192.168.0.10,支持跨網(wǎng)段 
 '例:PC001-10指明范圍為PC001~PC010(計(jì)算機(jī)名可以包含-號) 
 '與指定格式不相同的,默認(rèn)為單IP[計(jì)算機(jī)名],也可以在"未掃描的計(jì)算機(jī).txt"里配置 
 '"硬件信息.txt"是以逗號分隔各項(xiàng)硬件信息,你需要自己導(dǎo)入XLS整理、精簡 
 '未掃描到的計(jì)算機(jī),會把機(jī)號、用戶名、密碼保存到"未掃描的計(jì)算機(jī).txt" 
 '再次運(yùn)行腳本將只讀取"未掃描的計(jì)算機(jī).txt"里的信息(如果存在并且大小不為0) 
 '********************************說明結(jié)束************************************* 
  
 Dim Input, InfoOutFile, LogFile '請按格式給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 "掃描過程會很慢,請耐心等待,完成后會給出提示",,"掃描開始" 
 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  " 臺"  _ 
         vbCrLf  vbTab  "掃描失?。?  Space(LenNum2)  intCount2  " 臺"  _ 
         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 "配置信息格式不正確,請修改" 
    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 "配置信息格式不正確,請修改" 
   WScript.Quit 
  End If 
 End If 
End Function 


'********************************************************************************* 
'目的:連接到遠(yuǎn)程主機(jī)的WMI命名空間 
'輸入:arrArray數(shù)組,包含有計(jì)算機(jī)名[IP]、用戶名、密碼 
'調(diào)用:LinkServer過程 
'    如果返回SWbemLocator對象ConnectServer方法的實(shí)例,調(diào)用OutInfo過程 
'    如果返回Err信息(字符串類型),輸出計(jì)算機(jī)名[IP]、用戶名、密碼及錯(cuò)誤信息到LogFile文件 
'   OutInfo過程 
'    如果返回Err信息(字符串類型)輸出計(jì)算機(jī)名[IP]、用戶名、密碼及錯(cuò)誤信息到LogFile文件 
'傳遞:SWbemLocator對象ConnectServer方法的實(shí)例傳遞給OutInfo過程 
'   計(jì)算機(jī)名[IP]、命名空間、用戶名、密碼傳遞給LinkServer過程 
'********************************************************************************* 
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ò)誤編號:"  CStr(Err.Number)  _ 
             ",錯(cuò)誤原因:"  CStr(Err.Description)  _ 
             ",錯(cuò)誤來源:"  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對象ConnectServer方法的實(shí)例 
'調(diào)用:獲取硬件信息的GetXXXInfo過程 
'傳遞:SWbemLocator對象ConnectServer方法的實(shí)例 
'返回:所有調(diào)用的GetInfo過程都未返回Err對象,則返回True 
'   某個(gè)GetInfo過程返回Err對象,則返回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)(初裝日期),主板型號(廠商)(發(fā)行日期),CPU型號(接口類型),外頻,L2容量(速度),"  _ 
           "內(nèi)存總量,內(nèi)存速度(位置),內(nèi)存類型(封裝類型),硬盤型號(容量),顯卡型號(顯存),網(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 
 '硬盤 
 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  "硬盤型號未檢索到," 
 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:用戶名 
'   strPassword:密碼 
'返回:連接成功,返回SWbemLocator類連接遠(yuǎn)程主機(jī)后的對象的實(shí)例 
'   連接失敗,返回錯(cuò)誤對象 
'********************************************************* 
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對象 
'****************************************** 
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 

                            
1234下一頁閱讀全文
您可能感興趣的文章:
  • 用VBS控制鼠標(biāo)的實(shí)現(xiàn)代碼(獲取鼠標(biāo)坐標(biāo)、鼠標(biāo)移動、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)右擊)
  • 獲取外網(wǎng)IP并發(fā)送到指定郵箱的vbs代碼[已測]
  • vbs 獲取當(dāng)前目錄的實(shí)現(xiàn)代碼
  • VBS獲取當(dāng)前目錄下所有文件夾名字的代碼
  • vbs獲取當(dāng)前時(shí)間日期的代碼
  • vbscript獲取文件的創(chuàng)建時(shí)間、最后修改時(shí)間和最后訪問時(shí)間的方法
  • vbs中獲取腳本當(dāng)前路徑的2個(gè)方法
  • 通過vbs獲取遠(yuǎn)程host文件并保存到指定目錄
  • VBScript獲取CPU使用率的方法
  • 使用vbs獲取雅虎匯率

標(biāo)簽:阜新 承德 錫林郭勒盟 黃山 鄂爾多斯 齊齊哈爾 青島 麗水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第1/4頁》,本文關(guān)鍵詞  用,vbs,實(shí)現(xiàn),獲取,電腦硬件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第1/4頁》相關(guān)的同類信息!
  • 本頁收集關(guān)于用vbs實(shí)現(xiàn)獲取電腦硬件信息的腳本_最新版第1/4頁的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章