WMI 脚本高手不完全手册

Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。用户可以:
1.在远程计算机器上启动一个进程。
2.设定一个在特定日期和时间运行的进程。
3.远程启动计算机。
4.获得本地或远程计算机的已安装程序列表。
5.查询本地或远程计算机的 Windows 事件日志。
而WMI适用的运得环境也是有些限制的,WMI 适用于所有最新版本的 Windows。WMI 附带在 Windows Me、Windows 2000、Windows XP 和 Windows Server 2003 之中。
对于 Windows 98 和 Windows NT 4.0,可以访问http://www.microsoft.com/downloads并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。 或直接我们本站下载
注意:在 Windows NT 4.0 上安装并运行 WMI 之前,需要首先安装 Service Pack 4 或更高版本。
WMI 需要的其他软件包括:
1. Microsoft Internet Explorer 5.0 或更高版本。
2. Windows script Host(WSH)。Windows 2000、Windows XP、Windows Server 2003、和 Windows Me 附带的 WSH,而不是 Windows NT4 或 Windows 98 附带的 WSH。您可以从以下地址下载 WSH http://www.microsoft.com/downloads. WSH 的最新版本—— 包括在 Windows XP 和 Windows Server 2003 之中——是 WSH 5.6。
要使WMI脚本可以正常的运行,Windows里的WMI 服务(winmgmt)保证是运行的,这样才可以实现WMI里的更多功能。
好了,关于WMI的一些基本的信息资料就说到这,要想看更多的可以到MicroSoft网站的MSDN找。下面就简单的讲一下WMI脚本编写的基本要素,看看下面的代码:
//这个脚本是查看系统启动的引导配置参数,下面我们来看看关于WMI脚本编写的架构。
On Error Resume Next
//下面这行是比较重要的,它定义了主机的变量,可以是本机或远程主机,域上的机等,参数英文的“.”是表示本机,要想实现其它机的可以填上其它机的主机名或IP。
strComputer = "."
//下面这行是通过GetObject得到主机的WMI对象管理空间“\root\cimv2”,如果是本机的是通过NT(Authentication)认证的,所以可以不用用户名和密码,而对于非本机或非域机的就要再加多几条参数,
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
//执行WMI数据对象的查询
//至于连接远程的要用下面的语句
Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", "administrator", "a")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BootConfiguration",,48)

//利用数组列出相关
For Each objItem in colItems
Wscript.Echo "BootDirectory: " & objItem.BootDirectory
Next
从上面的例子可以看出写一个WMI的要求:
1.得到主机的WMI对像管理空间
2.执行WMI数据对象的查询
3.利用数组列出相关
学习编写的架构并不难,只要练多几次就行了,但是学习WMI的第一个难题就是它的子集对象,因为我们并不知道它的子集对象是什么,这样写起程序来就会力不从心了。要一下子知道这样子集的对象也是不难的,只要在MicroSoft的MSDN找找会有不少,但是这样找下去的话可能要找很久或资料不够全,是不是有些难呢?其实MicroSoft公司的网站上有一个叫“scriptomatic”的工具,才100多K,解压后你们发觉真正有用的是那个才12k的“scriptomatic.hta”文件,双击打开后你会发觉是一个子集的数据列表,且还有例子呢。

以上就是查询“Win32_BIOS”里的子集参数,是不是很易实现WMI脚本的编写呢?
朋友们,可曾记得大半年前是不是有一个这样的漏洞:就是一个GUEST用户权限可以用WMI的脚本实现加账号的例子,其实就是一个WMI 命名空间的安全性出现问题。下面我们打开计算机上的MMC看看如何设置WMI的安全权限。
在运行菜单上打“MMC”,然后在“文件”菜单上选“添加/删除管理单元”,然后在“独立”的选项卡(默认)上按“添加”,之后来到“添加独立管理单元”列表。
然后就一路按“添加”、“确定”就可以了。返回到MMC的主介面上,然后右击“WMI”单元选“属性”。
在WMI控件属性对话框中单击安全选项卡。
一个名为Root,前面带加号(+)的文件夹将会出现。如果必要,展开这个树状结构,定位到想要设置权限的命名空间。
单击安全设置按钮。一组用户和权限显示出来。如果用户在这个列表中,请按照需要修改权限。如果用户不再这个列表中,请单击 添加 按钮,然后从账户所在的位置(本地计算机、域等等)添加用户。
小提示:
为了查看和设置 NameSpace 安全性,用户必需拥有读取安全设置 和 编辑安全设置 权限。系统管理员默认具备这些权限,并可以按照需要将权限赋予其他用户如果一个用户需要远程访问命名空间,必须为其选中远程启用权限。
默认情况下,针对一个命名空间设置的用户权限只对该命名空间有效。如果希望用户可以访问该命名空间和其下所有子命名空间,或者只能访问子命名空间,请单击高级按钮。单击编辑并在出现的对话框中指定允许访问的范围。这样就可以防止此类事情的发生,但是透过此类的WMI命名空间的安全设置,也可以成为黑手会配置后门的地方,所以在架建一个安全的系统,这里不能不看。今天的WMI技术就介绍到这里,文章写得有些仓促,难免有问题,请各位多多指点小弟。

(0)

相关推荐

  • WMI 脚本高手不完全手册

    Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远程计算机.WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径.用户可以: 1.在远程计算机器上启动一个进程. 2.设定一个在特定日期和时间运行的进程. 3.远程启动计算机. 4.获得本地或远程计算机的已安装程序列表. 5.查询本地或远程计算机的 Windows 事件日志. 而WMI适用的运得环境也是有些限制的,WMI

  • Vbs脚本经典教材(最全的资料还是MSDN)

      -为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,

  • 使用vbscript脚本在表单中进行选择的代码

    问: 嗨,Scripting Guy!我想创建一个带有四个单选按钮的表单,其中每个按钮各代表一台计算机.可以选择一个单选按钮,单击另一个按钮,然后脚本将在所选的计算机上运行.我怎样才能做到? -- CW 答: 嗨,CW.如果我们所说的只是 VBScript 和 Windows Script Host,那么这个问题很简单:办不到.除了显示消息框以外,VBScript 和 WSH 都无法创建图形用户界面:没办法通过脚本使用单选按钮.列表框.下拉列表以及其他图形元素. 但是--噢,你们以前一定见过这种

  • 用vbscript脚本实现返回 IP 配置数据的代码

    用以返回配置数据(类似于 IPCONFIG 命令返回信息)的 WMI 脚本.' Returning IP Configuration Data ' WMI script that returns configuration data similar to that returned by IpConfig. strComputer = "." Set objWMIService = GetObject("winmgmts:\\"& strComputer &

  • 用vbs确定脚本正在哪一个帐户下运行

    问: 您好,脚本专家!如何确定脚本正在哪一个帐户下运行? -- KW 答: 您好,KW.您知道,自从我们以各种托辞而开设这一专栏以来已有一段时间了,对于我们而言,这并非易事:毕竟,寻找托辞是我们这些脚本专家的拿手好戏.明确了这一点,那就让我们以我们最喜欢的一个托辞开始吧:我们将向您介绍的脚本只在 Windows XP 和 Windows Server 2003 上有效.我们将向您介绍使得该脚本在 Windows 2000 上同样有效的方法,但后者绝对不及前者好. 噢,是的:现在感觉该方法不错.

  • 运行脚本之前,如何确定计算机上的默认脚本宿主的代码

    问: 您好,脚本专家!我知道,在运行脚本时,可使用代码确定脚本是否在 WScript 或 CScript 中运行.但我想不明白的是:运行脚本之前,如何确定计算机上的默认脚本宿主? -- AT 答: 您好,AT.您知道,人们完全难倒脚本专家并不是常事:不过我们不得不承认这个问题的确有点挑战性.(嗯,嗯:那么,或许它并不足以能够难倒脚本专家:老实说,事实上它相当简单.不过你们无需知道这些.)我们还不知道如何回答这个问题,但我们知道,为了帮助您解决这个问题,我们将会需要大量辛勤的工作和奉献. 但是,在

  • 用VBS实现脚本结束进程与防止进程启动

    今天下午没课,躲进私人空间开始思考些问题.在浏览VBS相关案例时,自己写了两个小程序出来,有Hack性质的(其实只要能"借刀杀人",什么软件没黑客性质?- -!).Kill.vbs用来在cmd下结束进程,Dis.vbs用来在窗口模式下防止某进程再次启动.这两个VBS都不会被杀毒软件KILL掉,并且有一定的隐蔽性--看代码!('为注释) Kill.vbs: 复制代码 代码如下: for each ps in getobject _   ("winmgmts:\\.\root\c

  • MySQL-tpch 测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一整套面向商业的ad-hoc查询和并发数据修改,强调测试的是数据库.平台和I/O性能,关注查询能力. 官网:http://www.tpc.org/tpch 下载地址:http://www.tpc.org/tpch/spec/tpch_2_14_3.tgz 或 http://www.tpc.org/tp

  • 用vbs列出注册表中 Run 项中的所有项目

    问: 您好,脚本专家!如何列出注册表中 Run 项中的所有项目? -- JW 答: 您好,JW.如何列出注册表中 Run 项中的所有项目?坦白地讲,我们不打算告诉您.真的很抱歉.不是因为我们不喜欢您,而是因为我们认为我们有一个更好的答案给您.(如果我们错了,那好,我们只能说这不会是第一次.)  由于您对 Run 项感兴趣,因此我们假定您真正想知道的是如何找出哪些程序被配置为在每次 Windows 启动时自动运行.您一定可以从 Run 项中读取到该信息,不要对此产生怀疑.实际上,您可以从 Run 

  • 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是介绍两个最常用的jQuery插件. 分别用于表单验证和自动完成提示(类似google suggest). 二.前言 研究别人的作品真是一件花时间而且痛苦的过程. 当然也和本人英文不好有关. 总觉得控件作者写了很多文档但是都不够系统, 需要深入研究很多的实例后才能了解作者的思路.所以学习和研究一个插件需要很高成本, 如果发现了Bug并修复需要

随机推荐