1、认识win强大的管理工具WMI(脚本篇) - WMI大家可能都听说过,就是Windows管理工具,看名字就知道他的功能有多么的强大,他可以管理windows的方方面面,从常见的文件操作到硬件管理,都可以通过WMI来实现。 WMI的语法十分简单,对于所有的命名空间、对象等用法几乎一模一样。 一、连接 WMI不仅可以管理本地计算机,也可以管理员成计算机,所以创建WMI的第一步就是连接计算机 Dim k k = Microsoft 赋予命名空间 Set MyWMIObj = GetObject(winmgmts:.root&k) .代表本机 上面是我常用的代码,很简单,MSDN中给我们列出了完整的方
2、法: On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Password k = Microsoft 赋予命名空间 set MyWMIObj = CreateObject(WbemScripting.SWbemLocator) set ProObj = MyWMIObj.ConnectServer(Computer, root/ & k, user, pwd) 上面的方法让我们了解到如何来管理远程计算机,这样一来我们就可以写出可以集中管理的程序来。 二、枚举 每一个命名空间下都有很多的对象,每个对象我们都可以
3、把它当作集合来处理。 - DNS On Error Resume Next Computer = MyPC user = MyPCadministrator 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_Z
4、one) 方法看起来很像SQL语法,没错,但是少了很多功能,比如like等等 For Each d in Domain response.write d.Name & Next - IIS On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Password k = MicrosoftIISv2 赋予命名空间 set MyWMIObj = CreateObject(WbemScripting.SWbemLocator) set ProObj = MyWMIObj.ConnectServer(Computer,
5、root/ & k, user, pwd) Set IIS = ProObj.ExecQuery(Select * from IIsWebService WHERE AnonymousUserName = Adminstrator) AnonymousUserName 为站点中的一个元素 For Each d in IIS response.write d.Name & Next - 用户和组 On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Password k = cimv2 赋予命名空间 set MyW
6、MIObj = 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 & Next - 卷和分区 On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Passwor
7、d 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 & Next 以上列举了一些不同类型的命名空间的对象的枚举方法,从上面的方法中我们可以看到用法都是一样的。
8、 三、创建 On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Password k = cimv2 赋予命名空间 set MyWMIObj = CreateObject(WbemScripting.SWbemLocator) set ProObj = MyWMIObj.ConnectServer(Computer, root/ & k, user, pwd) - Set o = objWMIService.Get(Win32_Account) o.CreateInstanceFromPropertyData
9、*,*,*,. - 上面的代码上半部分与第二节中的一样 下面的为创建的代码 其中 *,*,*,. 为对象的元素,可参考MSDN 四、修改 On Error Resume Next Computer = MyPC user = MyPCadministrator pwd = Password k = cimv2 赋予命名空间 set MyWMIObj = CreateObject(WbemScripting.SWbemLocator) set ProObj = MyWMIObj.ConnectServer(Computer, root/ & k, user, pwd) - Set colItem
10、s = objWMIService.ExecQuery(Select * from Win32_Account where Name = Administrator) For Each o In colItems o.Modify *,*,*,. Next - 上面的代码上半部分与第二节中的一样 下面的为修改的代码,要注意修改时要确定修改的唯一性,所以用到了 where 其中 *,*,*,. 为对象的元素,修改时,其元素不同于创建时的元素,应参考MSDN 到此,关于WMI的使用方法已基本介绍完了,通过以上的这些内容,我们可以看到,WMI竟然是如此的简单,功能是那么的强大。当然有关于WMI的并不
11、仅仅是这些,由于本人水平有限所以有很多东西还是未知的,期待大家共同探讨。 六、权限 在使用前我们应该知道WMI只有在Administrators组成员,或者被授权的用户才能使用。 以下来自MS:授权 WMI 用户并设置权限 1、打开 WMI 控制。 2、在控制台树中,右键单击“WMI 控制”,然后单击“属性”。 3、单击“安全”选项卡。 4、选择要授予用户或组访问权限的名称空间,然后单击“安全”。 5、在“安全”对话框中,单击“添加”。 6、在“选择用户、计算机或组”对话框的“查找范围”框中,输入想要添加的对象(用户或组)的名称。单击“检查名称”以验证输入项,然后单击“确定”。您可能必须更改其位置或使用“高级”按钮查询对象。详细信息,请参阅该对话框帮助。 7、在“安全”对话框中的“权限”下,选择允许或拒绝新用户或组的权限。 级别 描述 执行方法 允许运行从 WMI 类别或范例中导出的方法。 全部写入 |允许全部读取、写入和删除对所有 WMI 对象、类别和范例的访问权限。 部分写入 |允许对静态 WMI 对象进行写入访问。 提供程序写入| 允许对提供程序提供的对象进行写入访问。 启用帐户 |允许对 WMI 对象进行读取访问。 远程启用 |允许对名称空间进行远程访问。 读取安全 |允许对 WMI 安全信息进行只读访问。 编辑安全 |允许读取和写入 WMI 安全信息。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1