基于WMIC和脚本实现对内网终端及设备的信息统计
计算机自动化管理中WMI的应用分析

计算机自动化管理中WMI的应用分析WMI(Windows Management Instrumentation)是微软的一种技术,用于管理Windows 操作系统中的各种系统资源。
它提供了一种标准化的方式,使得管理员可以通过脚本或编程语言来管理操作系统、应用程序、网络和其他系统资源。
WMI可以用于监测系统性能、配置系统设置、查询和修改系统信息等多种用途。
在计算机自动化管理中,WMI被广泛应用于对系统资源进行监控、诊断、配置和管理。
本文将对WMI的应用进行分析,并探讨其在计算机自动化管理中的作用。
一、WMI的基本原理WMI是基于CIM(Common Information Model)标准的,它使用了一种称为WMI Provider 的组件来访问和管理系统资源。
WMI Provider可以看作是系统资源的一个“代理”,它通过标准化的接口向外提供系统资源的信息和管理功能。
WMI Provider可以是系统内置的提供程序,也可以是由第三方开发的自定义提供程序。
通过WMI Provider,管理员可以通过WMI接口来查询、监控和管理系统资源。
这种模式使得WMI可以与各种编程语言和脚本语言进行集成,实现对系统资源的灵活管理。
二、WMI的应用场景WMI可以应用于多种计算机自动化管理场景,包括系统监控、软件配置、故障诊断、性能优化等方面。
下面我们将分别介绍WMI在这些方面的应用。
1. 系统监控WMI可以用于监控系统的各种资源使用情况,例如CPU利用率、内存使用情况、磁盘空间、网络流量等。
管理员可以编写脚本或程序来定期查询这些信息,实现对系统运行状况的实时监控。
WMI还支持事件订阅机制,管理员可以利用这一特性来实现对系统事件的实时监控和处理。
2. 软件配置WMI可以用于对系统软件和配置进行管理。
通过WMI接口,管理员可以查询系统中已安装的软件列表,或者进行软件的安装、卸载、更新等操作。
WMI还可以用于修改系统配置参数,如网络设置、服务配置、安全策略等,实现对系统配置的自动化管理。
用vbs实现获取电脑硬件信息的脚本_最新版

⽤vbs实现获取电脑硬件信息的脚本_最新版代码⼀:'*******************************************************************************************'Version:3.1' 调整错误处理⽅法,错误信息输出到LogFile⽂件,可以查看扫描失败原因' 如果出现“RPC 服务器不可⽤”错误,是因为远程主机没开机' 如果出现“RPC 服务器不可⽤”之外的错误,可能是由于正在运⾏的程序造成,请你把此信息告诉我' 重启后再次扫描就可以排除⾮“RPC 服务器不可⽤。
”的错误' 如果扫描到的硬件信息为空,应该是驱动问题(或BIOS不完善),请⾃⾏解决'Version:3.0' 增加输出BIOS的发⾏⽇期,和主板信息放在⼀起'Version:2.9' 修正所有GetInfo过程遇错的处理⽅法,避免返回的数组上限不符合输出要求导致脚本报错。
' 之所以为出现这种情况,是因为Win32类检索不到硬件或连接到Win32类失败;' 原来判断是否出现Err,忽略了检索不到硬件的情况(连接成功⽆Err,Count为0)' 检索不到硬件多数是因为驱动没装好'Version:2.8' 增加GetIDEProtocol过程,获取IDE控制器使⽤的协议,只是增加了代码,没有调⽤' 计划增加检索其它存储器控制器的过程'Version:2.7' 检索硬盘/显卡/⽹卡/声卡的过程增加 DeviceID 属性(设备标识符)' 此属性不被输出,⽤于脚本内部判断'Version:2.6' 原来输出搜索到的第⼀个硬盘' 改为输出搜索到的第⼀个InterfaceType属性为IDE的硬盘的信息'Version:2.5' 增加Sort过程,排序硬件信息'Version:2.4' 调整输出信息的分类,同类信息尽可能的只使⽤⼀个逗号分隔,以便导⼊xls后在同⼀列' 查询到的硬件信息如果是空或0,有可能是相关驱动不完善或未定义此信息,也可能是未安装驱动' 因为WMI查询就代表了系统知道这些硬件的详细信息,查不到信息就是系统不知道' 系统不知道硬件的详细信息,代表着性能可能有所缺失,建议找个好驱动安装' 值得注意的是主板驱动' (为了更容易理解,此版本的升级信息被编辑过)'Version:2.3' 取消2.2版增加输出的硬盘接⼝类型' 由于STAT也归于IDE接⼝,这会导致误解' PS:脚本只输出搜索到的第⼀个硬盘'Version:2.2' GetMemoryInfo过程增加MemoryType、FormFactor、TypeDetail三个属性' 输出增加内存类型、封装类型' 输出增加硬盘容量、接⼝类型'Version:2.1' GetOSInfo过程增加去掉Caption属性中带有的逗号“,”的代码' 原因:在检测2003系统时,读取到的Caption属性,带有逗号“,”' 这会影响输出,因为输出是以逗号“,”为分隔符的'Version:2.0 B5发布版' GetNetworkInfo过程改为使⽤MACAddress属性⾮空、' Manufacturer属性⾮"Microsoft"判断⽹卡'Version:2.0 Beta4' GetNetworkInfo过程使⽤NetConnectionStatus属性判断⽹络适配器' NetConnectionStatus属性表明连接状态(2000系统不⽀持此属性)' 物理⽹络适配器才具有此状态(包括停⽤状态在内)'Version:2.0 Beta3' GetNetworkInfo过程增加⼀个判断' 忽略读取IPAddress(0)时会产⽣Err类型数据的适配器(对战平台)'Version:2.0 Beta2' GetOSInfo过程原来使⽤的Name、ServicePackMajorVersion属性' 改为使⽤Caption、CSDVersion属性' 所有GetInfo过程增加错误处理代码,避免正在扫描的时候' 脚本遇到运⾏时错误导致脚本退出'Version:2.0 Beta1' 增加扫描失败记录,再次运⾏脚本只读取失败记录,忽略配置信息'Version:1.1' GetNetworkInfo过程增加⼀个判断' 忽略NetConnectionID属性(接⼝名称)为空的适配器'Version:1.0' 初始版本''E-Mail:lzmyst@'你可以任意编辑、引⽤脚本的全部或部分代码'转贴、引⽤脚本的全部或部分代码请保留版权'**************************************'********************************说明开始*************************************'Input格式:起始IP-数量=⽤户名=密码;起始计算机名-数量=⽤户名=密码' 多个配置项⽤“;”隔开'例:192.168.0.1-10指明IP范围为192.168.0.1~192.168.0.10,⽀持跨⽹段'例:PC001-10指明范围为PC001~PC010(计算机名可以包含-号)'与指定格式不相同的,默认为单IP[计算机名],也可以在"未扫描的计算机.txt"⾥配置'"硬件信息.txt"是以逗号分隔各项硬件信息,你需要⾃⼰导⼊XLS整理、精简'未扫描到的计算机,会把机号、⽤户名、密码保存到"未扫描的计算机.txt"'再次运⾏脚本将只读取"未扫描的计算机.txt"⾥的信息(如果存在并且⼤⼩不为0)'********************************说明结束*************************************Dim Input, InfoOutFile, LogFile '请按格式给Input赋值'Input = "pc021=administrator=cylslynetbar"Input = "PC001-109=administrator=cylslynetbar;pc110-85=administrator=LYjfnetbaradmin"InfoOutFile = "硬件信息.txt"LogFile = "未扫描的计算机.txt"Redim arrConfig(0)Dim WshShell, FSO, intCount1, intCount2intCount1 = 0intCount2 = 0Set WshShell = WScript.CreateObject("WScript.Shell")Set FSO = WScript.Createobject("Scripting.Filesystemobject")ReadConfigWshShell.Popup "扫描过程会很慢,请耐⼼等待,完成后会给出提⽰",,"扫描开始"LinkRemoteServer arrConfigDim LenNum1, LenNum2If intCount1 > intCount2 ThenLenNum1 = 0LenNum2 = Len(intCount1) - Len(intCount2)ElseLenNum1 = Len(intCount2) - Len(intCount1)LenNum2 = 0End IfSort InfoOutFileWshShell.Popup "扫描结果:" & _vbCrLf & vbTab & "扫描成功:" & Space(LenNum1) & intCount1 & " 台" & _vbCrLf & vbTab & "扫描失败:" & Space(LenNum2) & intCount2 & " 台" & _vbCrLf & "扫描失败的电脑已做记录,再次运⾏脚本只扫描记录⾥的电脑",,"扫描完成" Function ReadConfigDim objMatches, objMatche,objLogFile, arrLog, intUBarrConfigIf FSO.FileExists(LogFile) ThenIf FSO.GetFile(LogFile).Size = 0 ThenSet objMatches = GetMatche("([^;=]+)=([^;=]+)=([^;=]+)", Input)For Each objMatche In objMatchesGetConfig objMatche.SubMatches(0), objMatche.SubMatches(1), objMatche.SubMatches(2) NextIf objMatches.Count = 0 ThenMsgbox "配置信息格式不正确,请修改"WScript.QuitEnd IfElseSet objLogFile = FSO.OpenTextFile(LogFile)Do Until objLogFile.AtEndOfStreamarrLog = Split(objLogFile.ReadLine,"=")intUBarrConfig = ((Ubound(arrConfig)+1)\3+1)*3-1Redim Preserve arrConfig(intUBarrConfig)arrConfig(intUBarrConfig-2) = arrLog(0)arrConfig(intUBarrConfig-1) = arrLog(1)arrConfig(intUBarrConfig-0) = arrLog(2)LoopEnd IfElseSet objMatches = GetMatche("([^;=]+)=([^;=]+)=([^;=]+)", Input)For Each objMatche In objMatchesGetConfig objMatche.SubMatches(0), objMatche.SubMatches(1), objMatche.SubMatches(2)WScript.QuitEnd IfEnd IfEnd Function'*********************************************************************************'⽬的:连接到远程主机的WMI命名空间'输⼊:arrArray数组,包含有计算机名[IP]、⽤户名、密码'调⽤:LinkServer过程' 如果返回SWbemLocator对象ConnectServer⽅法的实例,调⽤OutInfo过程' 如果返回Err信息(字符串类型),输出计算机名[IP]、⽤户名、密码及错误信息到LogFile⽂件' OutInfo过程' 如果返回Err信息(字符串类型)输出计算机名[IP]、⽤户名、密码及错误信息到LogFile⽂件'传递:SWbemLocator对象ConnectServer⽅法的实例传递给OutInfo过程' 计算机名[IP]、命名空间、⽤户名、密码传递给LinkServer过程'*********************************************************************************Function LinkRemoteServer(arrArray)Dim objErrLog, E, objLinkServer, objConnection, objWbemLocator, objErrSet objWbemLocator = CreateObject("WbemScripting.SWbemLocator")Set objErrLog = FSO.CreateTextFile(LogFile,True)For E = 0 To Ubound(arrArray) Step 3Set objLinkServer = LinkServer(arrConfig(E),"root\cimv2",arrConfig(E+1),arrConfig(E+2))If Err ThenobjErrLog.Writeline arrArray(E) & "=" & arrArray(E+1) & "=" & arrArray(E+2) & "=" & _"错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By LinkServer Function"intCount2 = intCount2 + 1Err.ClearElseobjErr = OutInfo(objLinkServer)If Vartype(objErr) = 8 ThenobjErrLog.Writeline arrArray(E) & "=" & arrArray(E+1) & "=" & arrArray(E+2) & "=" & objErrintCount2 = intCount2 + 1End IfEnd IfNextEnd Function'******************************************************'⽬的:输出硬件信息'输⼊:SWbemLocator对象ConnectServer⽅法的实例'调⽤:获取硬件信息的GetXXXInfo过程'传递:SWbemLocator对象ConnectServer⽅法的实例'返回:所有调⽤的GetInfo过程都未返回Err对象,则返回True' 某个GetInfo过程返回Err对象,则返回False'******************************************************Function OutInfo(objRemote)Dim OutFile, arrInfo, strOutInfo, Tmp, AIf FSO.FileExists(InfoOutFile) ThenSet OutFile = FSO.OpenTextFile(InfoOutFile,8)ElseSet OutFile = FSO.CreateTextFile(InfoOutFile)OutFile.Writeline "计算机名,系统(初装⽇期),主板型号(⼚商)(发⾏⽇期),CPU型号(接⼝类型),外频,L2容量(速度)," & _ "内存总量,内存速度(位置),内存类型(封装类型),硬盘型号(容量),显卡型号(显存),⽹卡,IP/MAC"End If'系统arrInfo = GetOSInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfstrOutInfo = arrInfo(0) & "," & arrInfo(1) & "(" & arrInfo(2) & "),"'主板arrInfo = GetBoardInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfstrOutInfo = strOutInfo & arrInfo(0) & "(" & arrInfo(1) & ")"'BIOSarrInfo = GetBIOSInfo(objRemote)End IfstrOutInfo = strOutInfo & "(" & arrInfo(2) & "),"'CPUarrInfo = GetCPUInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfstrOutInfo = strOutInfo & arrInfo(1) & "(" & arrInfo(8) & ")," & arrInfo(4) & "," & _arrInfo(6) & "(" & arrInfo(7) & "),"'内存arrInfo = GetMemoryInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfTmp = 0For A = 1 To Ubound(arrInfo) Step 6Tmp = Tmp + Cint(arrInfo(A))NextstrOutInfo = strOutInfo & arrInfo(0) & "条,共" & Tmp & "M,"Tmp = ""For A = 2 To Ubound(arrInfo) Step 6If A = Ubound(arrInfo) - 4 ThenTmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & "),"ElseTmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ") "End IfNextstrOutInfo = strOutInfo & TmpTmp = ""For A = 4 To Ubound(arrInfo) Step 6If A = Ubound(arrInfo) - 2 ThenTmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & "),"ElseTmp = Tmp & arrInfo(A) & "(" & arrInfo(A+1) & ") "End IfNextstrOutInfo = strOutInfo & Tmp'硬盘Tmp = ""arrInfo = GetDiskInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfFor A = 1 To Ubound(arrInfo) Step 5If arrInfo(A+1) = "IDE" ThenTmp = arrInfo(A) & "(" & arrInfo(A+2) & "G),"Exit ForEnd IfNextIf Tmp = "" ThenstrOutInfo = strOutInfo & "硬盘型号未检索到,"ElsestrOutInfo = strOutInfo & TmpEnd If'显卡arrInfo = GetVideoInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfstrOutInfo = strOutInfo & arrInfo(0) & "(" & arrInfo(1) & "M),"'⽹卡arrInfo = GetNetworkInfo(objRemote)If Vartype(arrInfo) = 8 ThenOutInfo = arrInfoExit FunctionEnd IfstrOutInfo = strOutInfo & arrInfo(1) & "," & arrInfo(2) & Space(17-Len(arrInfo(2))) & arrInfo(3) '输出OutFile.Writeline strOutInfo'*********************************************************'⽬的:连接到远程主机的WMI命名空间'输⼊:strComputer:远程主机的计算机名或IP' strNamespace:命令空间' strUserName:⽤户名' strPassword:密码'返回:连接成功,返回SWbemLocator类连接远程主机后的对象的实例' 连接失败,返回错误对象'*********************************************************Function LinkServer(strComputer,strNamespace,strUserName,strPassword) Dim objWbemLocatorSet objWbemLocator = CreateObject("WbemScripting.SWbemLocator")Dim objConnectionOn Error Resume NextSet objConnection = objwbemLocator.ConnectServer _(strComputer, strNamespace, strUserName, strPassword)If Err ThenSet LinkServer = ErrExit FunctionEnd IfOn Error Goto 0objConnection.Security_.ImpersonationLevel = 3Set LinkServer = objConnectionEnd Function'******************************************'⽬的:正则表达式'输⼊:strPatrn:正则表达式模式' strString:要执⾏正则表达式的字符串'返回:Match对象'******************************************Function GetMatche(strPatrn, strString)Dim RegExSet RegEx = New RegexpRegEx.Global = TrueRegEx.IgnoreCase =TrueRegEx.Pattern = strPatrnSet GetMatche = RegEx.Execute(strString)End Function'***************************************'⽬的:2、8、16进制转10进制'输⼊:strString:2、8、16进制数' intNum:进制(2|8|16)'返回:10进制数'***************************************Function ChangeToDecimal(strString, intNum)ChangeToDecimal = 0If Isnull(strString) Then ChangeToDecimal = 0 : Exit FunctionDim A, MFor A = 1 To Len(strString)M = LCase(Mid(strString, A, 1))Select Case MCase "a" :M = 10Case "b" :M = 11Case "c" :M = 12Case "d" :M = 13Case "e" :M = 14Case "f" :M = 15End SelectChangeToDecimal = ChangeToDecimal + M * intNum^(Len(strString)-A) NextEnd Function'*******************************************************'⽬的:分析配置信息'输⼊:strIP, strUser, strPW:IP[计算机名]、账户、密码'返回:⽆,直接把分析结果保存在数组'*******************************************************Function GetConfig(strIP, strUser, strPW)Dim Matches, SubMatcheDim IP_1, IP_2, IP_3, IP_4, intStar, intEnd, A, intConfigNumIf Matches.Count = 1 ThenSet SubMatche = Matches(0)intStar = Cint(SubMatche.SubMatches(3))intEnd = intStar + Cint(SubMatche.SubMatches(4)) - 1For A = intStar To intEndIP_4 = A Mod 256IP_3 = (Cint(SubMatche.SubMatches(2))+ A\256) Mod 256IP_2 = (Cint(SubMatche.SubMatches(1)) + (Cint(SubMatche.SubMatches(2))+ A\256)\256) Mod 256 IP_1 = Cint(SubMatche.SubMatches(0)) + (Cint(SubMatche.SubMatches(1)) + _(Cint(SubMatche.SubMatches(2))+ A\256)\256)\256If IP_1 > 223 Or IP_1 = 127 Or IP_1 < 1 ThenMsgbox strIP & "包含的" & IP_1 & "." & IP_2 & "." & IP_3 & "." & IP_4 & _"不是有效IP,此IP及之后的IP已被丢弃"Exit FunctionEnd IfintConfigNum = (Ubound(arrConfig)+1)\3 + 1Redim Preserve arrConfig(intConfigNum*3-1)arrConfig(intConfigNum*3-3) = IP_1 & "." & IP_2 & "." & IP_3 & "." & IP_4arrConfig(intConfigNum*3-2) = strUserarrConfig(intConfigNum*3-1) = strPWNextExit FunctionEnd IfDim ComputerName_Patrn, Prefix, intLenComputerName_Patrn = "([\S]+[^0-9]{1})([0]*[\d]+)-([\d]+)"Set Matches = GetMatche(ComputerName_Patrn, strIP)If Matches.Count = 1 ThenSet SubMatche = Matches(0)Prefix = SubMatche.SubMatches(0)intLen = Len(SubMatche.SubMatches(1))intStar = Cint(SubMatche.SubMatches(1))intEnd = intStar + Cint(SubMatche.SubMatches(2)) - 1For A = intStar To intEndintConfigNum = (Ubound(arrConfig)+1)\3 + 1Redim Preserve arrConfig(intConfigNum*3-1)If Len(A) < intLen ThenarrConfig(intConfigNum*3-3) = Prefix & String(intLen-Len(A),"0") & AElsearrConfig(intConfigNum*3-3) = Prefix & AEnd IfarrConfig(intConfigNum*3-2) = strUserarrConfig(intConfigNum*3-1) = strPWNextExit FunctionEnd IfintConfigNum = (Ubound(arrConfig)+1)\3 + 1Redim Preserve arrConfig(intConfigNum*3-1)arrConfig(intConfigNum*3-3) = strIParrConfig(intConfigNum*3-2) = strUserarrConfig(intConfigNum*3-1) = strPWEnd Function'***********************************************************'⽬的:获取操作系统信息'输⼊:SWbemLocator对象ConnectServer⽅法连接到远程主机的实例'返回:数组,上限为2' 取操作系统的3种属性:' 0 1 2' CSName Caption&CSDVersion InstallDate' 计算机名系统名&SP版本初装⽇期'LastBootUpTime属性表⽰系统最近⼀次的启动时间'***********************************************************Function GetOSInfo(objConnection)Dim arrOSInfoDim objSystemInfos, objSystemInfo, arrOS(2)Dim TmpOn Error Resume NextSet objSystemInfos = objConnection.InstancesOf("win32_operatingsystem")If Err ThenGetOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetOSInfo Function"Err.ClearTmp = objSystemInfos.CountIf Err ThenGetOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetOSInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfFor Each objSystemInfo In objSystemInfosarrOS(0) = objSystemInfo.CSNamearrOS(1) = Replace(objSystemInfo.Caption,",","") & " " & objSystemInfo.CSDVersion arrOS(2) = Mid(CStr(objSystemInfo.InstallDate),1,4) & "-" & _Mid(CStr(objSystemInfo.InstallDate),5,2) & "-" & _Mid(CStr(objSystemInfo.InstallDate),7,2) '& ", " & _'Mid(CStr(objSystemInfo.InstallDate),9,2) & ":" & _'Mid(CStr(objSystemInfo.InstallDate),11,2) & ":" & _'Mid(CStr(objSystemInfo.InstallDate),13,2)NextIf Err ThenGetOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetOSInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfGetOSInfo = arrOSOn Error Goto 0End Function'***********************************************************'⽬的:获取主板信息'输⼊:SWbemLocator对象ConnectServer⽅法连接到远程主机的实例'返回:数组,上限为2' 取主板的3种属性:' 0 1 2' Product Manufacturer Version' 型号⼚商版本'***********************************************************Function GetBoardInfo(objConnection)Dim objboards, objboard, arrBoard(2)Dim TmpOn Error Resume NextSet objboards = objConnection.InstancesOf("Win32_BaseBoard")If Err ThenGetBoardInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBoardInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfTmp = objboards.CountIf Err ThenGetBoardInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBoardInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfFor each objboard In objboardsarrBoard(0) = Replace(Trim(objboard.Product),",","") '型号arrBoard(1) = Replace(Trim(objboard.Manufacturer),",","") '⼚商arrBoard(2) = Replace(Trim(objboard.Version),",","") '版本NextIf Err ThenGetBoardInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBoardInfo Function"Err.ClearOn Error Goto 0On Error Goto 0End Function'***********************************************************'⽬的:获取BIOS信息'输⼊:SWbemLocator对象ConnectServer⽅法连接到远程主机的实例'返回:数组,上限为2' 取BIOS的2种属性:' 0 1 2' Manufacturer SMBIOSBIOSVersion ReleaseDate' ⼚商版本发⾏⽇期'***********************************************************Function GetBIOSInfo(objConnection)Dim objBIOSs, objBIOS, arrBIOS(2)Dim TmpOn Error Resume NextSet objBIOSs = objConnection.InstancesOf("Win32_BIOS")If Err ThenGetBIOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBIOSInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfTmp = objBIOSs.CountIf Err ThenGetBIOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBIOSInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfFor each objBIOS In objBIOSsIf Isnull(objBIOS.Manufacturer) ThenarrBIOS(0) = "BIOS⼚商不存在" '请检查主板驱动是否完善或未安装,或BIOS不完善需要刷BIOSElsearrBIOS(0) = Replace(Trim(objBIOS.Manufacturer),",","")End IfIf Isnull(objBIOS.SMBIOSBIOSVersion) ThenarrBIOS(1) = "由SMBIOS汇报的BIOS版本不存在" '请检查主板驱动是否完善或未安装,或BIOS不完善需要刷BIOS ElsearrBIOS(1) = Replace(Trim(objBIOS.SMBIOSBIOSVersion),",","")End IfIf Isnull(objBIOS.ReleaseDate) ThenarrBIOS(2) = "BIOS发⾏⽇期未知" '请检查主板驱动是否完善或未安装,或BIOS不完善需要刷BIOSElsearrBIOS(2) = Left(Cstr(objBIOS.ReleaseDate),8)End IfNextIf Err ThenGetBIOSInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetBIOSInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfGetBIOSInfo = arrBIOSOn Error Goto 0End Function'************************************************************'⽬的:获取CPU信息'输⼊:SWbemLocator对象ConnectServer⽅法连接到远程主机的实例'返回:数组,上限为8' 取CPU的9种属性:' 0 1 2 3 4' Name MaxClockSpeed CurrentVoltage ExtClock' 核⼼数量型号主频电压外频' 5 6 7 8' AddressWidth L2CacheSize L2CacheSpeed SocketDesignationDim objCPU, objCPUs, arrCPU(8)On Error Resume NextSet objCPUs = objConnection.InstancesOf("win32_processor")If Err ThenGetCPUInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetCPUInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfarrCPU(0) = objCPUs.Count '每个CPU核⼼都返回⼀个实例,实例数量即为CPU核⼼数量 If Err ThenGetCPUInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetCPUInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfFor each objCPU In objCPUsarrCPU(1) = Replace(Trim(),",","") '型号arrCPU(2) = objCPU.MaxClockSpeed '主频arrCPU(3) = ChangeToDecimal(objCPU.CurrentVoltage, 16)/10 '电压arrCPU(4) = objCPU.ExtClock '外频arrCPU(5) = objCPU.AddressWidth '位宽arrCPU(6) = objCPU.L2CacheSize 'L2容量arrCPU(7) = objCPU.L2CacheSpeed 'L2频率arrCPU(8) = objCPU.SocketDesignation '插槽类型NextIf Err ThenGetCPUInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetCPUInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfGetCPUInfo = arrCPUOn Error Goto 0End Function'********************************************************************************************'⽬的:获取内存信息'输⼊:SWbemLocator对象的ConnectServer⽅法连接到远程主机的实例'返回:数组,上限为(内存条的数量*6),0=内存条的数量' 取内存的6种属性:' 1 2 3 4 5 6' capacity Speed DeviceLocator MemoryType FormFactor TypeDetail' 容量速度插槽位置内存类型封装(接⼝)类型详细类型-系统应⽤类型'DeviceLocator属性表⽰这个内存所在的插槽' ⼀般是字符加数字,数字相当于主板上内存插槽的物理位置'******************************************************************************************** Function GetMemoryInfo(objConnection)Dim objMemorys, objMemory, NumRedim arrMemory(0)On Error Resume NextSet objMemorys = objConnection.InstancesOf("Win32_PhysicalMemory")If Err ThenGetMemoryInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetMemoryInfo Function"Err.ClearOn Error Goto 0Exit FunctionEnd IfarrMemory(0) = objMemorys.Count '每条内存都返回⼀个实例,实例项数即内存条数量 If Err ThenGetMemoryInfo = "错误编号:" & CStr(Err.Number) & _",错误原因:" & CStr(Err.Description) & _",错误来源:" & CStr(Err.Source) & " By GetMemoryInfo Function"Err.ClearOn Error Goto 0For Each objMemory In objMemorysNum = Num + 1Redim Preserve arrMemory(Num*6)arrMemory(Num*6-5) = objMemory.capacity/1048576 '容量(M)arrMemory(Num*6-4) = objMemory.Speed '速度(MHz)arrMemory(Num*6-3) = objMemory.DeviceLocator '插槽位置Select Case objMemory.MemoryType '内存类型,Case 0 :arrMemory(Num*6-2) = "Unknown" '未知Case 1 :arrMemory(Num*6-2) = "Other" '其它Case 2 :arrMemory(Num*6-2) = "DRAM" '动态随机存储器Case 3 :arrMemory(Num*6-2) = "Synchronous DRAM" '同步动态随机存储器Case 4 :arrMemory(Num*6-2) = "Cache DRAM" '同步缓存动态随机存储器,三菱专利技术,插⼊⼀个SRAM作为⼆级CACHE使⽤ Case 5 :arrMemory(Num*6-2) = "EDO" '外扩充数据模式存储器(Extended Date Out)Case 6 :arrMemory(Num*6-2) = "EDRAM" '增强型动态随机存储器,在DRAM中包括了⼀⼩部分的SRAM(Enhanced DRAM) Case 7 :arrMemory(Num*6-2) = "VRAM" '视频存储器,专门为图形应⽤优化的存储器(Video DRAM)Case 8 :arrMemory(Num*6-2) = "SRAM" '静态随机存储器Case 9 :arrMemory(Num*6-2) = "RAM" '随机存储器Case 10 :arrMemory(Num*6-2) = "ROM" '只读存储器Case 11 :arrMemory(Num*6-2) = "Flash" '闪速存储器,简称闪存(Flash Memory),属于EEPROM(电擦除可编程只读存储器)类型 Case 12 :arrMemory(Num*6-2) = "EEPROM" '电可擦写可编程只读存储器Case 13 :arrMemory(Num*6-2) = "FEPROM" 'F什么可擦写可编程只读存储器Case 14 :arrMemory(Num*6-2) = "EPROM" '可擦写可编程只读存储器(Erasable Programmable ROM)Case 15 :arrMemory(Num*6-2) = "CDRAM" '同步缓存动态随机存储器,即Cache DRAMCase 16 :arrMemory(Num*6-2) = "3DRAM" '3维视频处理器专⽤存储器(3 DIMESION RAM)Case 17 :arrMemory(Num*6-2) = "SDRAM" '同步动态随机存储器,即Synchronous DRAMCase 18 :arrMemory(Num*6-2) = "SGRAM" '单⼝随机存储器(Signal RAM)Case 19 :arrMemory(Num*6-2) = "RDRAM" '总线式动态随机存储器Case 20 :arrMemory(Num*6-2) = "DDR" '双倍速率同步动态随机存储器,⼀个时钟周期内传输⼆次数据Case 21 :arrMemory(Num*6-2) = "DDR-2" '双倍速率同步动态随机存储器2,⼀个时钟周期内传输⼆次数据,4bit数据预读取能⼒ End SelectSelect Case objMemory.FormFactor '封装类型(接⼝类型)Case 0 :arrMemory(Num*6-1) = "Unknown" '未知Case 1 :arrMemory(Num*6-1) = "Other" '其它Case 2 :arrMemory(Num*6-1) = "SIP" '单列直插式封装Case 3 :arrMemory(Num*6-1) = "DIP" '双列直插式封装(Dual ln-line Package)Case 4 :arrMemory(Num*6-1) = "ZIP" '零插拔⼒封装(Zero Insertion Package)Case 5 :arrMemory(Num*6-1) = "SOJ" '⼩尺⼨(⼩外形)J形引脚封装(Small Out-Line J-Lead)Case 6 :arrMemory(Num*6-1) = "Proprietary" '专有封装(有专利权的)Case 7 :arrMemory(Num*6-1) = "SIMM" '单列直插式封装(Single Inline Memory Module)Case 8 :arrMemory(Num*6-1) = "DIMM" '双列直插式封装(Dual Inline Memory Module)Case 9 :arrMemory(Num*6-1) = "TSOP" '薄型⼩尺⼨封装(Thin Small Outline Package)Case 10 :arrMemory(Num*6-1) = "PGA" '陈列引脚封装。
扫描局域网硬件信息的 VBS

扫描局域网硬件信息的 VBS2009-03-12 14:22扫描局域网硬件信息的 VBS==================================================================== ===='本脚本的功能是检测硬件的信息.On Error Resume Nexttemp=0set wshshell=wscript.createobject("wscript.shell")'启动WMI服务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"),0strComputer = "."Set objWMIService = Getobject("winmgmts:\\" & strComputer &"\root\cimv2")'用一个文本来记录硬件信息Set WshNetwork = WScript.Createobject("work") computername=puterNameset fso=createobject("scripting.filesystemobject")tempfilter=("\\saves\11\kk\"& computername &".txt")set tempfile=fso.createtextfile(tempfilter)'主板set board =objwmiservice.execQuery("select * from win32_baseboard") for each item in boardboard2="主板: " & item.Productnexttempfile.writeline(board2)'CPUset cpu =objwmiservice.execQuery("select * from win32_processor") for each item in cpucpu2= "CPU : " & nexttempfile.writeline(cpu2)'内存Set colItems = objWMIService.ExecQuery("Select * fromWin32_PhysicalMemory",,48)For Each objItem in colItemsa=objitem.capacity/1048576temp=temp+objitem.capacityn=n+1Nextmemory=temp/1048576if n=1 thenmemory2= "内存: " & n & "条" &a&"M"elsememory2= "内存: " & n & "条" &a&"M"&" 总计"&memory&"M"end iftempfile.writeline(memory2)'硬盘set disk =objwmiservice.execQuery("select * from win32_diskdrive") for each item in diskdisk2= disk2 & item.model &" "disk1= "硬盘: "nexttempfile.write(disk1)tempfile.writeline(disk2)'显卡set video =objwmiservice.execQuery("select * fromwin32_videocontroller",,48)for each item in videovideo2= "显卡: " & item.Descriptionnexttempfile.writeline(video2)'网卡set network =objwmiservice.execQuery("SELECT * FROMWin32_NetworkAdapterConfiguration WHERE IPEnabled = True")for each item in networklan="网卡: " & item.descriptionnexttempfile.writeline(lan)systeminfo2="时间: " & nowtempfile.writeline(systeminfo2)。
基于WMI的局域网数据采集系统

和组 、 t eDrcoyWid w 安装 程序 、 n o s驱动程 序模 型设 备 Acv i t 、 n o s i e r Widw 驱动程序 , 以及 S M 管理信息基 ( B 数据等 。 I N P MI ) WM 托管资源通过一 个提供 程序与 WM 通讯 。当开始编写代码来与 WM 托管资源交互时 , I I 还经常会用 到一个术语 “ 实例 ” 它被用于 引用 在运行代码 中的托管 资 , 源 的虚 拟 表示 形 式 。
0 引言 .
随着局 域网在各个 领域中的广泛应用 , 局域网的管理 问题 也变 对 的 日益突出。而对局域 网中的大量计算机设备 进行监测与管理也 成为 了一项很艰 巨的重任 ,因此研 究局域 网中的计 算机设备如何进行 方便 地监 测与管理 , 变得非 常有意 义。 本课 题最初是 对某电业局 内部 5 0多 台安装 了 Widw n o s系统 的计 算机进行监测与管理 。 系统需要从这 5 多 台计算机 中收集各种 数据进 O 行分 析与存储 。而收集 的数据大体分成 了两种 。一种是静态数 据 , 即较 长一段时 间内都不会改变 的数据 。 这样 的数据包括 :P地址 、 网掩码 、 I 子 MAC地址 、 操作 系统版本 、P C U型号 、 盘 、 硬 内存 型号及 大小 以及主板 相关信息等等 ,获得这些信息 的 目的是为 了即时了解 底层的硬件配置 以方便相关部 门及时对老 旧的硬件进行更新换代 。 另一种是动态数据 , 这些数据会随着计算机的运行而改变 。这些 数据包括 : 内存 、P C U的占 用率 , 当前计算机 的运行进程 , 开启 的服务及端 口号等 , 获得 这些信息 的目的是为 了对 当前计算机 的运行情 况进行 即时捕捉 分析。对于静态 数据而言 , 由于这些数据在较长时 间内都 不会改变 , 因此对于这些数据 要求传送的实时性要求就不那 么严格 ,可以在开机后 五分钟之 内收集 并发送到数据库内即可。但相对 于动 态数据这些数据要根 据系统 的分 析要求实时进行采集。因此 , 整个 系统需要 一个数据采集模块 , 而这个 模块 由于处于整个系统的底层还要考虑应具有下述的特点 : () 1应具有一定的标准 , 具有可扩展性 。 f 对于硬件没有要求 , 2 ) 可在多个 wn o s i w 版本上运行 。 d () 3数据采集时应 占用较少的系统资源 , 不会影响计算机 的性能 。 () 4数据 采集 即支持用 户的随时指 令采集 , 又能实现数 据的周期 性
WindowsWMIC命令使用详解(附实例)

WindowsWMIC命令使用详解(附实例)Windows WMIC命令使用详解(附实例)执行“wmic”命令启动WMIC命令行环境。
这个命令可以在XP 或 .NET Server的标准命令行解释器(cmd.exe)、Telnet会话或“运行”对话框中执行。
这些启动方法可以在本地使用,也可以通过.NET Server终端服务会话使用。
第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符。
在WMIC命令行提示符上,命令以交互的方式执行。
wimic的运行方式可以有两种法:1、搞入wimic进入后输入命令运行,键入wimic后出现wmic:root\cli>时你就可以输入命令了,如输入process显示所有的进程。
不知道有什么命令时可以输入用/?来显示帮助。
exit 是退出交互模式。
具体帮助用法如下:命令行帮助命令例子说明/? 或 -? 显示所有全局开关和别名的语法/ /? /user /? 显示指定全局开关的信息/? class /? 显示某个命令的信息/? memcache /? 显示某个别名的信息/? temperature get /? 显示别名与动词组合的信息/?:Full irq get /?:Full 显示动词的帮助信息如:我要查看process命令的帮助,键入:process/?后显示如下:wmic:root\cli>process /?PROCESS - 进程管理。
提示: BNF 的别名用法。
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].用法:PROCESS ASSOC [<format specifier>]PROCESS CALL <method name> [<actual param list>]PROCESS CREATE <assign list>PROCESS DELETEPROCESS GET [<property list>] [<get switches>]PROCESS LIST [<list format>] [<list switches>]2、用wimic 后面直接跟命令运行,如wmic process 就显示了所有的进程了。
基于WMI的WindoWs远程监控(VC++)

微软一直都在努力地使Windows操作系统易于管理,这是通过集中不同的策略来实现的。目前在Windows NT 4.0 Option Pack中采用了Windows Script Host以来,脚本功能得到了显著改进。1994年,微软发布了版本号为1.0的Systems Management Server,它提供了硬件和软件库存、软件分布发布以及远程诊断功能。Zero Administration Initiative for Windows(Windows零管理,ZAW)不仅把这两种功能合为一体,同时还合并了一些其他技术(如微软管理管理控制台、Windows管理规范、基于Web的企业管理、系统策略和零管理包等)。ZAW最初面向的是WindowsNT/9x操作系统,允许实现自动化管理任务,并可对客户机的桌面进行集中式管理。后来Systems Management Server 2.0进一步增强了这些特性。
用WMIC命令脚本执行WMI任务

用WMIC命令脚本执行WMI任务━━━━━━━━━━━━━━━━━━━━━━━━━━MicrosoftWindowsManagementInstrumentation(WMI)。
中文名字叫Windows管理规范。
从Windows2000开始,WMI(Windows管理规范)就内置于操作系统中,并且成为了Windows 系统管理的重要组成部分。
所以大家很容易就能见到它的,因为我们至少也应该是个Windows2000的使用者了。
下面我将详细介绍它的每个细节,让你从不认识它到喜欢上它。
WMI能做什么?WMI不仅可以获取想要的计算机数据,而且还可以用于远程控制。
远程控制计算机可是大家都喜欢的东西。
很多远程监视控制类软件通常的做法是:在远程计算机上运行服务端后台程序,在本地计算机上运行一个客户器端控制程序,通过这二个程序的勾结来实现对计算机的远程控制。
这种作法的缺点是十分明显的,当服务端程序关了,这种远程监控就无法实现了,因为没有内线了。
而WMI实现的远程监视和控制完全不需要另外装什么服务端的东西,系统默认就将WMI服务给开了。
具体说来,WMI的本领如下:1.获取本地和远程计算机的硬件软件信息。
2.监视本地和远程计算机的软件和服务等运行状况。
3.控制本地和远程计算机的软件和服务运行。
4.高级应用。
如何访问WMI?当我们知道WMI的某些本领后,我们已经很想知道如何认识他并利用他了。
利用WMI有许多途径,简单说来有三种了:1.通过微软给我们提供的各种工具来实现普通查询和操作。
主要包括命令提示符下面的WMIC,还有就是微软给我们提供的WMITOOL,大家可以到微软的网站上免费下载,当然我也可以给大家免费提供。
2.通过自己编写脚本来实现更灵活操作。
要想真正灵活实用,对WSH脚本的熟悉是必须的,当然如果你不熟悉也没有关系,稍后我会给大家详细解释的。
3.通过编写我们自己的程序来访问并操作它。
什么语言都行。
如果用.NET类程序要简单些了,如果用VC等要复杂些了,起码我是这么认为的。
CC++通过WMI和系统API函数获取获取系统硬件配置信息

来源:/wenliabc2007/article/details/6718084前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU、内存、网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧...当然第一想法肯定是利用Windows提供的系统标准API函数来完成所需的功能,当然这也应该是当前最理想最有效率的选择了。
但是如果你对API编程不是很熟练的话...那就相当蛋疼了!你知道用API可以做到但是不知道用哪个API,好啊,可以查MSDN。
问题是你连API名字都不知道...当然,如果你们公司允许你们上国内局域网的话那就好办多了,因为有无数强大的网友会帮你找到答案。
使用API编程的另一个问题是如果你仍旧对API不熟悉的话调用起来相当困难、很不顺手。
还有一种方案就是--->“强大”的WMI,.net平台的程序员可能对这个比较熟悉,WMI即windows管理规范。
通过它可以访问、配置、管理和监视几乎所有的Windows资源。
当然对于程序员而言在WMI体系结构中我们最需要关心的就是WMI提供的程序和接口。
WMI提供程序在WMI和托管资源之间扮演着中间方的角色。
提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。
下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。
1.Active Directory提供程序链接库文件:dsprov.dll命名空间:root\directory\ldap作用:将Active Directory 对象映射到WMI。
2.事件日志提供程序链接库文件:ntevt.dll命名空间:root\cimv2作用:管理Windows 事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。
3.注册表提供程序链接库文件:stdprov.dll命名空间:root\default作用:读取、写入、枚举、监视、创建、删除注册表项和值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于WMIC和脚本实现对内网终端及设备的信息统计
摘要:随着电力企业信息化的不断深入发展,电力企业对信息化的依赖程度越
来越高,公司各种终端越来越多,给运维人员的设备台账治理带来了很大的难度。
本文主要探讨利用wmic和脚本进行终端信息收集,提高运维人员的工作效率。
关键词:WMIC;脚本;终端信息
1 引言
建立详细的设备台账,是终端运维工作的基础,但随着电网的发展,公司各
类终端越来越多,给运维人员的设备台账治理带来了很大难度。
微软Windows98
及以后的版本提供了WMIC功能,可快速查询系统软硬件及外接设备信息数据,
利用这一功能,使用宿主脚本及数据库技术,结合桌管系统策略下发功能,可提
高内外网终端及外接设备普查效率。
2 软件介绍
2.1 WMIC
wmic是wmic命令行,作为WindowsXP的一部分发布的wmi命令行工具提
供一个到wmi接触结构的命令行接口。
可以使用wmic.exex执行来自命令行的常
见wmi任务,包括浏览CIM和检查CIM类定义。
2.2 VB脚本
VBScript是Visual Basic Script的简称,即Visual Basic脚本语言,它是一种微
软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系
统中的元素,对系统进行管理。
同时它又是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。
如图2-1所示。
图2-1
2.3 北信源主机监控审计与补丁分发系统
北信源主机监控审计与补丁分发系统,以终端管理为核心,形成集主机监控审计、补丁
管理、桌面应用管理、信息安全管理、终端行为管控等终端安全行为一体的管理体系,为企
业管理者提供终端多位一体、同意管理的解决方案。
3 处理过程
3.1 前期准备
1)根据工作任务要求,收集合理的统计字段。
2)利用微软操作系统wbemtest工具在wmic中寻找相应的类别及对象,对相似相近的类
别
对象,根据要求进行合理的取舍。
3)根据确定的字段,在SQL Server数据库(或任何支持网络的关系型数据库)建立终端
计算机及外接设备数据表,并设置合理的字段属性。
3.2 编制脚本
1)编制并测试数据收集上报的宿主脚本程序,宿主脚本通过调用操作系统wmic管理功能,获取本机软硬件及外接设备数据后立刻上传服务器。
2)为更好的支持数据库,应采用VBScript或JavaScript脚本。
3)为最大化减少普查工作对终端用户的影响,宿主脚本或批处理在工作期间应以静默方
式运行。
3.3 下发策略
1)上传脚本至桌管系统,为确保数据库用户名、密码、ip等连接参数安全,不应该将明
文用户、密码、ip等变量直接写入脚本中,因为终端用户通过查看和截留脚本,可获取服务
器ip、端口、用户名、密码,采用加密的策略参数传递可以很好的解决这一安全性问题。
2)启用桌管下发策略,监视数据库或ftp服务器数据收集情况,如有重报应检查脚本中是
否设定了唯一性检查,通常情况下应以主机mac进行唯一性识别。
如有漏报,应检查主机操
作系统及防火墙设置是否正常。
3)正常情况下,策略运行一周可获得可观的普查覆盖率。
4)通过windows的 ODBC数据源设置,可直接从Excel中获取数据库普查所有数据。
4 实际应用
通过该方法可以高效、准确获取到系统软硬件及外接设备信息数据。
如图4-1、4-2所示。
图4-1
图4-2
5 总结
信息化发展到今天,一切在计算机上重复、繁杂的人工劳动都可以由它来代替了。
此次WMIC、宿主脚本、数据库、桌管(准入)系统综合应用,为我们提高工作效率和运行维护开辟
了新思路。
参考文献
[1] Tercel99.WMIC命令整理
[DB/OL]./Tercel99/article/details/6403823.html,2011
作者简介:
张莎(1992年10月),女,甘肃民勤,本科
邵娟(1985年5月),女,甘肃兰州,硕士。