'==========================================================================
'
' Date:2009/3/19
' Name: 查詢軟件和硬件列表清單
' Author:Smileruner
' www.overmcse.com
' 不支持Win2000及WinNT
'
' 3/19,添加了網(wǎng)卡過(guò)濾。
'==========================================================================
'on error resume Next
const HKEY_LOCAL_MACHINE = H80000002
const UNINSTALL_ROOT = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
const REG_SZ = 1
'Set wshshell=wscript.createobject("wscript.shell")
' wshshell.run ("%comspec% /c regsvr32 /s scrrun.dll"),0,true
' wshshell.run ("%comspec% /c sc config winmgmt start= auto"),0,true
' wshshell.run ("%comspec% /c net start winmgmt"),0
strComputer = Inputbox("請(qǐng)輸入要查詢的計(jì)算機(jī)名稱",,"")
If strComputer = "" then
Wscript.Echo "未輸入值或用戶取消,查詢退出。"
Wscript.Quit
End If
Set objswbemlocator = createobject("wbemscripting.swbemlocator")
Set objswbemservices = objswbemlocator.connectserver(strComputer, "root\cimv2")
If Err.number > 0 then
Wscript.Echo "目標(biāo)計(jì)算機(jī)無(wú)法連接。錯(cuò)誤的計(jì)算機(jī)名,或目標(biāo)計(jì)算機(jī)啟用了防火墻,RPC服務(wù)不可用。"
Err.number.clear
Wscript.Quit
End If
'swbemservices.security_.impersonationleobjvel = 3
Set fso=createobject("scripting.filesystemobject")
FileDate = Replace(date(), "/", "-")
resoultfilepath= strComputer FileDate ".html"
Set resultFile= fso.createtextfile(resoultfilepath,,true)
HtmlWriteHead()
'Html文檔開始
TableHead strComputer,"硬件清單"
'Html表格開始
OsWrite()
'寫入操作系統(tǒng)信息
BoardWrite()
'寫入主板信息
CpuWrite()
'寫入CPU信息
MemoryWrite()
'寫入內(nèi)存信息
HarddiskWrite()
'寫入硬盤信息
CdromWrite()
'寫入CDROM信息
VideoWrite()
'寫入顯示卡信息
NetcardWrite()
'寫入網(wǎng)卡信息
TableEnd()
'Html表格結(jié)尾
TableHead strComputer,"軟件清單"
'Html表格開頭
Softlist()
'寫入軟件信息
TableEnd()
'Html表格結(jié)尾
HtmlWriteEnd()
'Html文檔結(jié)束
ResultFile.close
Wscript.Echo "查詢完成!"
'=========以下是函數(shù)列表==========
Function OsWrite()
'函數(shù),寫入操作系統(tǒng)信息
Set colOs =objswbemservices.execquery("select * from win32_operatingsystem",,48)
For Each Ositem In colOs
oscaption = Ositem.caption
OsVersion = oscaption Ositem.version
WriteTable "操作系統(tǒng)",OsVersion
Next
End Function
Function BoardWrite()
'函數(shù),寫入主板信息
Set colBoard = objswbemservices.execquery("select * from win32_baseboard")
For Each Bditem In colBoard
boardname = Bditem.product
WriteTable "主板",boardname
Next
End Function
Function CpuWrite()
'函數(shù),寫入CPU信息
Set colCpu =objswbemservices.execquery("select * from win32_processor")
For Each item in colCpu
cpuname = (trim(item.name))
WriteTable "中央處理器",cpuname
Next
End Function
Function MemoryWrite()
'函數(shù),寫入內(nèi)存信息
mtotal = 0
num = 0
mill = 0
Set colMemory = objswbemservices.execquery("select * from win32_physicalmemory",,48)
For Each objitem In colMemory
mill = objitem.capacity/1048576
WriteTable "單根內(nèi)存容量",mill "M"
mtotal = mtotal+mill
num = num + 1
Next
WriteTable "總計(jì)內(nèi)存",num "條" "一共" mtotal "M"
End Function
Function HarddiskWrite()
'函數(shù),寫入硬盤信息
Set colDisk = objswbemservices.execquery("select * from win32_diskdrive", , 48)
For Each objitem In colDisk
diskname= objitem.caption
disksize= fix(objitem.size/1073741824)
WriteTable "硬盤",diskname " 容量:" disksize "G"
Next
End Function
Function CdromWrite()
'函數(shù),寫入CDROM信息
Set colCdrom = objswbemservices.execquery("select * from win32_cdromdrive where scsitargetid=0")
For Each objitem In colCdrom
cdname = objitem.name
WriteTable "光驅(qū)",cdname
Next
End Function
Function videoWrite()
'函數(shù),寫入顯示卡信息
Set colVideo = objswbemservices.execquery("select * from win32_videocontroller", , 48)
For Each objitem in colVideo
videoname = (trim(objitem.caption) (objitem.videomodedescription))
WriteTable "顯示卡",videoname
Next
End Function
Function netcardWrite()
'函數(shù),查詢網(wǎng)卡信息
Set colNetcards = objswbemservices.execquery("select * from win32_networkadapter")
For Each objNetcard in colNetcards
If Not IsNull(objNetcard.NetConnectionID) Then
NetCardName = objNetcard.productname
WriteTable "網(wǎng)卡名稱",NetCardName
If objNetcard.NetConnectionStatus = 2 Then
NetCardMac = objNetcard.macaddress
WriteTable "網(wǎng)卡Mac",NetCardMac
strQueryIp ="select * from win32_networkadapterconfiguration" _
" where IPEnabled = true" _
" and macaddress = '" objNetcard.macaddress "'"
Set colNetcardCfgs = objswbemservices.execquery(strQueryIp)
For Each objNetcardCfg in colNetcardCfgs
For Each CfgAdrress in objNetcardCfg.IPAddress
IpAdrress = CfgAdrress
WriteTable "IP地址",IpAdrress
Next
Next
Else
NetCardMac = "網(wǎng)卡被禁用或未連接。"
WriteTable "網(wǎng)卡Mac",NetCardMac
IpAdrress = "網(wǎng)卡被禁用或未連接。"
WriteTable "IP地址",IpAdrress
End If
End if
Next
End Function
Function softlist()
'函數(shù),寫入軟件信息
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
strComputer "\root\default:StdRegProv")
strKeyPath = UNINSTALL_ROOT
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each strSubKey In arrSubKeys
If NotHotfix(strSubKey) Then
SoftNameAndVersion = getProgNameAndVersion(oReg,strKeyPath "\" strSubKey)
If SoftNameAndVersion>"0" Then
WriteTable "軟件",SoftNameAndVersion
End If
End If
Next
End Function
Function NotHotfix(sSubKey)
If Left(sSubkey,2) = "KB" And len(sSubkey) = 8 Then
NotHotfix = 0
Else NotHotfix = 1
End if
End Function
Function getProgNameAndVersion(oReg,sKeyRoot)
Dim sKeyValuesAry, iKeyTypesAry, nCnt, sValue, sDisplayName, sDisplayVersion
oReg.EnumValues HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry, iKeyTypesAry
If NOT IsArray(sKeyValuesAry) Then
getProgNameAndVersion = 0
Exit Function
End If
For nCnt = 0 To UBound(sKeyValuesAry)
If InStr(1, sKeyValuesAry(nCnt), "DisplayName", vbTextCompare) Then
If iKeyTypesAry(nCnt) = REG_SZ Then
oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
If sValue>"" Then
sDisplayName = sValue
sDisplayName = Replace(sDisplayName, "[", "(")
sDisplayName = Replace(sDisplayName, "]", ")")
End If
End If
ElseIf InStr(1, sKeyValuesAry(nCnt), "DisplayVersion", vbTextCompare) Then
If iKeyTypesAry(nCnt) = REG_SZ Then
oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue
If sValue>"" Then sDisplayVersion = sValue
End If
End If
If (sDisplayName>"") AND (sDisplayVersion>"") Then
getProgNameAndVersion = sDisplayName " --版本號(hào): " sDisplayVersion
Exit Function
Else getProgNameAndVersion = 0
End If
Next
If sDisplayName>"" Then
getProgNameAndVersion = sDisplayName
Exit Function
End If
End Function
Function WriteTable(caption,value)
'函數(shù),將數(shù)據(jù)寫入HTML單元格
resultFile.Writeline "tr>"
resultFile.Writeline "td align=""left"" width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">nbsp;nbsp;" caption "/td>"
resultFile.Writeline "td bgcolor=""#ffffff"">nbsp;nbsp;" value "/td>"
resultFile.Writeline "/tr>"
End Function
Function HtmlWriteHead()
'函數(shù),寫入THML文件頭
resultFile.Writeline "html>"
resultFile.Writeline "head>"
resultFile.Writeline "title>軟硬件配置清單/title>"
resultFile.Writeline "/head>"
resultFile.Writeline "body>"
End Function
Function HtmlWriteEnd()
'函數(shù),寫入Html文件尾
resultFile.Writeline "/body>"
resultFile.Writeline "/html>"
End Function
Function TableHead(pcname,str)
'函數(shù),寫入Html表格結(jié)尾
resultFile.Writeline "h3>" pcname str " -- date:"now()" /h3>" VbCrLf
resultFile.Writeline "table width=""90%"" border=""0"" align=""center"" cellpadding=""0"" cellspacing=""1"" bgcolor=""#0000ff"">"
resultFile.Writeline "tr>"
resultFile.Writeline "th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""col"">資產(chǎn)類型/th>"
resultFile.Writeline "th bgcolor=""#ffffff"" scope=""col"">查詢結(jié)果值/th>"
resultFile.Writeline "/tr>"
strstyle = "th width=""30%"" height=""25"" bgcolor=""#ffffff"" scope=""row"">"
End Function
Function TableEnd()
'函數(shù),Html表格結(jié)尾
resultFile.Writeline "/table>"
End Function
到此這篇關(guān)于vbs查詢局域網(wǎng)內(nèi)電腦的軟件和硬件列表清單的文章就介紹到這了,更多相關(guān)查詢軟件和硬件列表清單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!