- 论坛徽章:
- 0
|
\'==========================================================================\r\n\'\r\n\' Date:2010/5/26\r\n\' Name: 查询软件和硬件列表清单\r\n\' 不支持Win2000及WinNT\r\n\'\r\n\' 3/19,添加了网卡过滤。\r\n\'==========================================================================\r\n\'on error resume Next\r\n\r\nconst HKEY_LOCAL_MACHINE = &H80000002 \r\nconst UNINSTALL_ROOT = \"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\"\r\nconst REG_SZ = 1\r\n\'==========================================================================\r\n\'Set wshshell=wscript.createobject(\"wscript.shell\")\r\n\' wshshell.run (\"%comspec% /c regsvr32 /s scrrun.dll\"),0,true\r\n\' wshshell.run (\"%comspec% /c sc config winmgmt start= auto\"),0,true\r\n\' wshshell.run (\"%comspec% /c net start winmgmt\"),0\r\n\r\nstrIPPattern = \"((2[0-4]\\d|25[0-5]|1?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|1?\\d\\d?)\"\r\nSet objNet = createobject(\"Wscript.Network\")\r\nSet objRegExp = New RegExp\r\n\r\nobjregexp.Pattern = strIPPattern\r\nSet objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\r\nSet IPConfigSet = objWMIService.ExecQuery _\r\n (\"Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE\")\r\nFor Each IPConfig in IPConfigSet\r\n If Not IsNull(IPConfig.IPAddress) Then \r\n For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)\r\n If InStr(IPConfig.Caption(i),\"VMware\") = 0 And InStr(IPConfig.Caption(i),\"Microsoft\") = 0 Then\r\n If InStr(IPConfig.Caption(i),\"169.254\") = 0 And InStr(IPConfig.Caption(i),\"0.0.0.0\") = 0 Then\r\n If objregexp.Test(IPConfig.IPAddress(i)) = True Then \r\n strIP = IPConfig.IPAddress(i)\r\n End If\r\n End If\r\n End If\r\n Next\r\n End If\r\nNext\r\nstrUser = objnet.UserName\r\nSet objNetwork = CreateObject(\"WScript.Network\") \r\n\r\n\'==========================================================================\r\nstrComputer = objNetwork.ComputerName\r\n\r\nIf strComputer = \"\" then\r\n Wscript.Echo \"未输入值或用户取消,查询退出。\"\r\n Wscript.Quit\r\nEnd If\r\n\'==========================================================================\r\nset path=wscript.createobject(\"wscript.shell\") \r\nusera=path.ExpandEnvironmentStrings(\"%username%\") \r\n\'==========================================================================\r\nSet objswbemlocator = createobject(\"wbemscripting.swbemlocator\")\r\nSet objswbemservices = objswbemlocator.connectserver(strComputer, \"root\\cimv2\")\r\nIf Err.number <> 0 then\r\n Wscript.Echo \"目标计算机无法连接。错误的计算机名,或目标计算机启用了防火墙,RPC服务不可用。\"\r\n Err.number.clear\r\n Wscript.Quit\r\nEnd If\r\n\r\n\'swbemservices.security_.impersonationleobjvel = 3\r\n\r\nSet fso=createobject(\"scripting.filesystemobject\")\r\nFileDate = Replace(date(), \"/\", \"-\")\r\nresoultfilepath= strComputer & usera & \".html\"\r\nSet resultFile= fso.createtextfile(resoultfilepath,,true)\r\n\r\nHtmlWriteHead()\r\n\'Html文档开始\r\n\r\nTableHead strComputer,\"硬件清单\" \r\n\'Html表格开始\r\n\r\nOsWrite() \r\n \'写入操作系统信息\r\nBoardWrite()\r\n \'写入主板信息\r\nCpuWrite() \r\n \'写入CPU信息\r\nMemoryWrite() \r\n \'写入内存信息\r\nHarddiskWrite()\r\n \'写入硬盘信息\r\nCdromWrite()\r\n \'写入CDROM信息\r\nVideoWrite()\r\n \'写入显示卡信息\r\nNetcardWrite()\r\n \'写入网卡信息\r\nTableEnd()\r\n \'Html表格结尾\r\nTableHead strComputer,\"软件清单\"\r\n \'Html表格开头\r\nSoftlist()\r\n \'写入软件信息\r\nTableEnd()\r\n \'Html表格结尾\r\nHtmlWriteEnd()\r\n \'Html文档结束\r\n\r\nResultFile.close \r\nWscript.Echo \"查询完成!\"\r\n\r\n\'=========以下是函数列表==========\r\n\r\n\r\nFunction OsWrite() \r\n \'函数,写入操作系统信息\r\n Set colOs =objswbemservices.execquery(\"select * from win32_operatingsystem\",,48)\r\n For Each Ositem In colOs\r\n oscaption = Ositem.caption\r\n OsVersion = oscaption & Ositem.version\r\n WriteTable \"操作系统\",OsVersion\r\n Next\r\nEnd Function \r\n\r\n\r\nFunction BoardWrite()\r\n \'函数,写入主板信息\r\n Set colBoard = objswbemservices.execquery(\"select * from win32_baseboard\")\r\n For Each Bditem In colBoard\r\n boardname = Bditem.product\r\n WriteTable \"主板\",boardname\r\n Next\r\nEnd Function \r\n\r\n\r\nFunction CpuWrite()\r\n \'函数,写入CPU信息\r\n Set colCpu =objswbemservices.execquery(\"select * from win32_processor\")\r\n For Each item in colCpu\r\n cpuname = (trim(item.name))\r\n WriteTable \"中央处理器\",cpuname\r\n Next\r\nEnd Function \r\n\r\nFunction MemoryWrite()\r\n \'函数,写入内存信息\r\nmtotal = 0\r\nnum = 0\r\nmill = 0\r\n Set colMemory = objswbemservices.execquery(\"select * from win32_physicalmemory\",,48)\r\n For Each objitem In colMemory\r\n mill = objitem.capacity/1048576\r\n WriteTable \"单根内存容量\",mill & \"M\"\r\n mtotal = mtotal+mill\r\n num = num + 1\r\n Next\r\n WriteTable \"总计内存\",num & \"条\" & \"一共\" & mtotal & \"M\"\r\nEnd Function \r\n\r\nFunction HarddiskWrite()\r\n \'函数,写入硬盘信息\r\n Set colDisk = objswbemservices.execquery(\"select * from win32_diskdrive\", , 48)\r\n For Each objitem In colDisk\r\n diskname= objitem.caption\r\n disksize= fix(objitem.size/1073741824)\r\n WriteTable \"硬盘\",diskname & \" 容量:\" & disksize & \"G\"\r\n Next\r\nEnd Function \r\n\r\n\r\n\r\nFunction CdromWrite()\r\n \'函数,写入CDROM信息\r\n Set colCdrom = objswbemservices.execquery(\"select * from win32_cdromdrive where scsitargetid=0\")\r\n For Each objitem In colCdrom\r\n cdname = objitem.name\r\n WriteTable \"光驱\",cdname\r\n Next\r\nEnd Function\r\n\r\nFunction videoWrite()\r\n \'函数,写入显示卡信息\r\n Set colVideo = objswbemservices.execquery(\"select * from win32_videocontroller\", , 48)\r\n For Each objitem in colVideo\r\n videoname = (trim(objitem.caption) & (objitem.videomodedescription)) \r\n WriteTable \"显示卡\",videoname\r\n Next\r\nEnd Function \r\n\r\n\r\nFunction netcardWrite()\r\n \'函数,查询网卡信息\r\n Set colNetcards = objswbemservices.execquery(\"select * from win32_networkadapter\")\r\n For Each objNetcard in colNetcards \r\n If Not IsNull(objNetcard.NetConnectionID) Then\r\n NetCardName = objNetcard.productname\r\n WriteTable \"网卡名称\",NetCardName\r\n \r\n If objNetcard.NetConnectionStatus = 2 Then \r\n NetCardMac = objNetcard.macaddress\r\n WriteTable \"网卡Mac\",NetCardMac\r\n\r\n strQueryIp =\"select * from win32_networkadapterconfiguration\" &_\r\n \" where IPEnabled = true\" &_\r\n \" and macaddress = \'\" & objNetcard.macaddress & \"\'\"\r\n Set colNetcardCfgs = objswbemservices.execquery(strQueryIp) \r\n For Each objNetcardCfg in colNetcardCfgs \r\n For Each CfgAdrress in objNetcardCfg.IPAddress\r\n IpAdrress = CfgAdrress\r\n WriteTable \"IP地址\",IpAdrress\r\n Next\r\n Next \r\n\r\n Else\r\n\r\n NetCardMac = \"网卡被禁用或未连接。\"\r\n WriteTable \"网卡Mac\",NetCardMac\r\n IpAdrress = \"网卡被禁用或未连接。\" \r\n WriteTable \"IP地址\",IpAdrress \r\n \r\n End If\r\n \r\n End if\r\n \r\n Next\r\nEnd Function \r\n\r\nFunction softlist()\r\n \'函数,写入软件信息\r\nSet StdOut = WScript.StdOut \r\nSet oReg=GetObject(\"winmgmts:{impersonationLevel=impersonate}!\\\\\" &_ \r\nstrComputer & \"\\root\\default:StdRegProv\") \r\n\r\nstrKeyPath = UNINSTALL_ROOT \r\n\r\noReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys \r\n\r\nFor Each strSubKey In arrSubKeys \r\n If NotHotfix(strSubKey) Then \r\n SoftNameAndVersion = getProgNameAndVersion(oReg,strKeyPath & \"\\\" & strSubKey)\r\n If SoftNameAndVersion<>\"0\" Then \r\n WriteTable \"软件\",SoftNameAndVersion \r\n End If \r\n End If\r\nNext \r\nEnd Function\r\n\r\nFunction NotHotfix(sSubKey) \r\n If Left(sSubkey,2) = \"KB\" And len(sSubkey) = 8 Then\r\n NotHotfix = 0\r\n Else NotHotfix = 1\r\n End if\r\nEnd Function\r\n\r\nFunction getProgNameAndVersion(oReg,sKeyRoot)\r\nDim sKeyValuesAry, iKeyTypesAry, nCnt, sValue, sDisplayName, sDisplayVersion\r\noReg.EnumValues HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry, iKeyTypesAry\r\n If NOT IsArray(sKeyValuesAry) Then \r\n getProgNameAndVersion = 0\r\n Exit Function \r\n End If\r\n\r\n For nCnt = 0 To UBound(sKeyValuesAry)\r\n If InStr(1, sKeyValuesAry(nCnt), \"DisplayName\", vbTextCompare) Then\r\n If iKeyTypesAry(nCnt) = REG_SZ Then\r\n oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue\r\n If sValue<>\"\" Then \r\n sDisplayName = sValue \r\n sDisplayName = Replace(sDisplayName, \"[\", \"(\")\r\n sDisplayName = Replace(sDisplayName, \"]\", \")\")\r\n End If\r\n End If\r\n ElseIf InStr(1, sKeyValuesAry(nCnt), \"DisplayVersion\", vbTextCompare) Then\r\n If iKeyTypesAry(nCnt) = REG_SZ Then\r\n oReg.GetStringValue HKEY_LOCAL_MACHINE, sKeyRoot, sKeyValuesAry(nCnt), sValue\r\n If sValue<>\"\" Then sDisplayVersion = sValue\r\n End If\r\n End If\r\n\r\n If (sDisplayName<>\"\") AND (sDisplayVersion<>\"\") Then \r\n getProgNameAndVersion = sDisplayName & \" --版本号: \" & sDisplayVersion\r\n Exit Function\r\n Else getProgNameAndVersion = 0 \r\n End If\r\n Next\r\n\r\n If sDisplayName<>\"\" Then \r\n getProgNameAndVersion = sDisplayName\r\n Exit Function \r\n End If\r\nEnd Function\r\n\r\n\r\nFunction WriteTable(caption,value)\r\n \'函数,将数据写入HTML单元格\r\nresultFile.Writeline \"<tr>\"\r\nresultFile.Writeline \"<td align=\"\"left\"\" width=\"\"30%\"\" height=\"\"25\"\" bgcolor=\"\"#ffffff\"\" scope=\"\"row\"\"> \" & caption & \"</td>\"\r\nresultFile.Writeline \"<td bgcolor=\"\"#ffffff\"\"> \" & value & \"</td>\"\r\nresultFile.Writeline \"</tr>\"\r\nEnd Function \r\n\r\nFunction HtmlWriteHead()\r\n \'函数,写入THML文件头\r\nresultFile.Writeline \"<html>\" \r\nresultFile.Writeline \"<head>\" \r\nresultFile.Writeline \"<title>软硬件配置清单</title>\"\r\nresultFile.Writeline \"</head>\" \r\nresultFile.Writeline \"<body>\" \r\nEnd Function \r\n\r\n\r\nFunction HtmlWriteEnd()\r\n \'函数,写入Html文件尾\r\nresultFile.Writeline \"</body>\" \r\nresultFile.Writeline \"</html>\" \r\nEnd Function \r\n\r\nFunction TableHead(pcname,str)\r\n \'函数,写入Html表格结尾\r\nresultFile.Writeline \"<h3>\" & pcname & str & \" -- date:\"&now()&\" </h3>\" & VbCrLf\r\nresultFile.Writeline \"<table width=\"\"90%\"\" border=\"\"0\"\" align=\"\"center\"\" cellpadding=\"\"0\"\" cellspacing=\"\"1\"\" bgcolor=\"\"#0000ff\"\">\" \r\nresultFile.Writeline \"<tr>\" \r\nresultFile.Writeline \"<th width=\"\"30%\"\" height=\"\"25\"\" bgcolor=\"\"#ffffff\"\" scope=\"\"col\"\">资产类型</th>\"\r\nresultFile.Writeline \"<th bgcolor=\"\"#ffffff\"\" scope=\"\"col\"\">查询结果值</th>\"\r\nresultFile.Writeline \"</tr>\" \r\nstrstyle = \"<th width=\"\"30%\"\" height=\"\"25\"\" bgcolor=\"\"#ffffff\"\" scope=\"\"row\"\">\"\r\nEnd Function \r\n\r\nFunction TableEnd()\r\n \'函数,Html表格结尾\r\nresultFile.Writeline \"</table>\" \r\nEnd Function \r\n\r\n\r\n严重说明:此脚本并是我个人原创,请大家自觉。下载下来后保存为.vbs即可 |
|