当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > WMI 脚本高手不完全手册

VBScript
用vbs检索在运行对话框中键入的一系列命令的代码
编写可以打开文本文件并打乱在该文件中所找到的单词顺序的vbs脚本
在 HTA 中暂停脚本的方法
运行脚本之前,如何确定计算机上的默认脚本宿主的代码
用vbs实现删除名称中有撇号的文件夹
用vbs将输出内容写到屏幕以覆盖当前屏幕上的内容的方法
用vbs实现配置无人登录计算机时使用的屏幕保护程序
用vbs更改 Internet Explorer 的标题栏
用vbs读取文本文件的最后一行
用vbs实现重新启动 Internet Explorer
用vbs实现禁用服务
用vbs确定计算机是否有 USB 2.0 端口的代码
用vbs列出注册表中 Run 项中的所有项目
用vbs将名称截断以使其最多包含 16 个字符的代码
用vbs将本地文件替换为在文件服务器上找到的新版本
用vbs确定脚本正在哪一个帐户下运行
用vbs确定可移动驱动器的连接时间
用vbs记录屏幕保护程序的开始时间和结束时间
用vbs计算某个词在日志文件中的出现次数
vbs病毒的简单例子源代码解析

VBScript 中的 WMI 脚本高手不完全手册


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 240 ::
收藏到网摘: n/a

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技术就介绍到这里,文章写得有些仓促,难免有问题,请各位多多指点小弟。