2008年6月4日星期三

走近 WSH(Windows Scripting Host)

WSH--这个在词典中都很难找寻的名词,对许多朋友来讲也许还比较陌生。但正是WSH ,使 Windows 操作系统具备了更为强大的功能。它让我们在使用系统时拥有了许多的便利,但同时,也让我们的电脑遭遇了不少的麻烦。 下面,就让我们一步步走进 WSH 的神秘世界,共同评判它的是非功过。

一、WSH 是什么?

WSH,是“Windows Scripting Host”的缩略形式,其通用的中文译名为“Windows 脚本宿主”。对于这个较为抽象的名词,我们可以先作这样一个笼统的理解:它是内嵌于 Windows 操作系统中的脚本语言工作环境。

Windows Scripting Host 这个概念最早出现于 Windows 98 操作系统。大家一定还记得 MS-Dos 下的批处理命令,它曾有效地简化了我们的工作、带给我们方便,这一点就有点类似于如今大行其道的脚本语言。但就算我们把批处理命令看成是一种脚本语言,那它也是 98 版之前的 Windows 操作系统所唯一支持的“脚本语言”。而此后随着各种真正的脚本语言不断出现,批处理命令显然就很是力不从心了。面临这一危机,微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos 命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为“Windows Scripting Host”。WSH 架构于 ActiveX 之上,通过充当 ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。

再具体一点描述:你自己编写了一个脚本文件,如后缀为 .vbs 或 .js 的文件,然后在 Windows 下双击并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是 Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在命令行下,则为 Cscript.exe)。

WSH 诞生后,在 Windows 系列产品中很快得到了推广。除 Windows 98 外,微软在 Internet Information Server 4.0、Windows Me、Windows 2000 Server,以及 Windows 2000 Professional 等产品中都嵌入了 WSH。现在,早期的 Windows 95 也可单独安装相应版本的 WSH。(附:各种版本 WSH 的安装程序可以从 http://msdn.microsoft.com/scripting 站点下载)。

二、WSH 有什么用?

WSH 的设计,在很大程度上考虑到了“非交互性脚本(noninteractive scripting)”的需要。在这一指导思想下产生的 WSH,给脚本带来非常强大的功能,例如:我们可以利用它完成映射网络驱动器、检索及修改环境变量、处理注册表项等工作;管理员还可以使用 WSH 的支持功能来创建简单的登陆脚本,甚至可以编写脚本来管理活动目录。

而事实上,上述功能的实现,均与 WSH 内置的多个对象密切相关,这些内置对象肩负着直接处理脚本指令的重任。因此,我们也可以通过了解 WSH 的内置对象来探寻 WSH 可以实现的功能。

图 1 是 WSH 的内置对象构成情况。



(图1)
从图中我们可以看出,WSH 共有 14 个内置对象,它们各自有着明确分工。具体而言,位于最底部的 Wscript ,主要作用是提取命令行变量,确定脚本文件名,确定 WSH 执行文件名(wscript.exe 还是 cscript.exe),确认 host 版本信息,创建、关连及分离 COM 对象,写入事件,按程序结束一个脚本文件的运行,向默认的输出设备(如对话框、命令行)输出信息等;WshArguments 的作用是获取全部的命令行变量; WshNamed 负责获取指定的命令行参数集;WshUnnamed 负责获取未经指定的命令行参数集;WshNetwork 的主要作用是开放或关闭网络共享,连接或断开网络打印机,映射或取消网络中的共享,获取当前登陆用户的信息;WshController 可以创建一个远程脚本对象;WshRemote 可以实现网络中对计算机系统的远程管理,也可按计划对其它程序/脚本进行处理;WshRemote Error 的作用在于:当一个远程脚本(WshRemote 对象)因脚本错误而终止时,获取可用的错误信息;WshShell 主要负责程序的本地运行,处理注册表项、创建快捷方式、获取系统文件夹信息,处理环境变量;WshShortcut 主要用于按计划创建快捷方式;WshSpecialfolders 用于获取任意一个 Windows 特殊文件夹的信息;WshURLShortcut 用于按程序要求创建进入互联网资源的快捷方式;WshEnvironment 用于获取任意的环境变量(如 WINDIR, PATH, 或 PROMPT);WshScriptExec 用于确定一个脚本文件的运行状态及错误信息。

在这些内置对象的帮助下,我们就可以利用 WSH 充分发挥 VBScript 及 JScript 等脚本的强大威力,极大地提高我们的工作效率。

标签:


评论: 发表评论

订阅 博文评论 [Atom]





<< 主页

This page is powered by Blogger. Isn't yours?

订阅 博文 [Atom]