以下内容均为自己理解的,如有错误之处还请大家指出。
我的技术面很窄,所以以下内容中的代码均为ASP+VBScript。
正文: ----------------------------------------------------------------------------------------------
WMI大家可能都听说过,就是Windows管理工具,看名字就知道他的功能有多么的强大,他可以管理windows的方方面面,从常见的文件操作到硬件管理,都可以通过WMI来实现。
WMI的语法十分简单,对于所有的命名空间、对象等用法几乎一模一样。
一、连接
WMI不仅可以管理本地计算机,也可以管理员成计算机,所以创建WMI的第一步就是连接计算机
Dim k k = "Microsoft" '赋予命名空间 Set MyWMIObj = GetObject("winmgmts:\\.\root\"&k) '.代表本机
上面是我常用的代码,很简单,MSDN中给我们列出了完整的方法:
On Error Resume Next Computer = "MyPC" user = "MyPC\administrator" pwd = "Password" k = "Microsoft" '赋予命名空间 set MyWMIObj = CreateObject("WbemScripting.SWbemLocator") set ProObj = MyWMIObj.ConnectServer(Computer, "root/" & k, user, pwd)
上面的方法让我们了解到如何来管理远程计算机,这样一来我们就可以写出可以集中管理的程序来。
二、枚举 每一个命名空间下都有很多的对象,每个对象我们都可以把它当作集合来处理。 ------------------------------------- DNS On Error Resume Next Computer = "MyPC" user = "MyPC\administrator" pwd = "Password" k = "MicrosoftDNS" '赋予命名空间 set MyWMIObj = CreateObject("WbemScripting.SWbemLocator") set ProObj = MyWMIObj.ConnectServer(Computer, "root/" & k, user, pwd) Set Domain = ProObj.ExecQuery("Select * from MicrosoftDNS_Zone") '方法看起来很像SQL语法,没错,但是少了很多功能,比如like等等 For Each d in Domain response.write d.Name & "<br>" Next
--------------------------------- IIS
On Error Resume Next Computer = "MyPC" user = "MyPC\administrator" pwd = "Password" k = "MicrosoftIISv2" '赋予命名空间 set MyWMIObj = CreateObject("WbemScripting.SWbemLocator") set ProObj = MyWMIObj.ConnectServer(Computer, "root/" & k, user, pwd) Set IIS = ProObj.ExecQuery("Select * from IIsWebService WHERE AnonymousUserName = Adminstrator") 'AnonymousUserName 为站点中的一个元素 For Each d in IIS response.write d.Name & "<br>" Next
--------------------------------- 用户和组
On Error Resume Next Computer = "MyPC" user = "MyPC\administrator" pwd = "Password" k = "cimv2" '赋予命名空间 set MyWMIObj = CreateObject("WbemScripting.SWbemLocator") set ProObj = MyWMIObj.ConnectServer(Computer, "root/" & k, user, pwd) Set us = ProObj.ExecQuery("Select * from Win32_Account") For Each d in us response.write d.Name & "<br>" Next
--------------------------------- 卷和分区
On Error Resume Next Computer = "MyPC" user = "MyPC\administrator" pwd = "Password" k = "cimv2" '赋予命名空间 set MyWMIObj = CreateObject("WbemScripting.SWbemLocator") set ProObj = MyWMIObj.ConnectServer(Computer, "root/" & k, user, pwd) Set disk = ProObj.ExecQuery("Select * from Win32_DiskPartition") For Each d in disk response.write d.Name & "<br>" Next
以上列举了一些不同类型的命名空间的对象的枚举方法,从上面的方法中我们可以看到用法都是一样的。
|