本篇主要介绍 WSH 基础知识,我的以为很难理解,并且 Research 起来还很乱,因此决定记录下来!html
WSH 全称是,Windows Scripting Host,中文译为“Windows脚本宿主”;是微软的,一种脚本技术;是内嵌在 Windows 系统中的,脚本语言的,工做环境。在这个环境中,咱们能够,以文字的形式,写脚本,并执行脚本。环境中,还自带了一些对象,同时也可使用其余,第三方COM对象。这个环境,使咱们能够充分利用脚本,来实现计算机工做的,自动化。所谓的 Host 也就是指,提供了,能让 VBScript 执行的,一切的资源,的环境。而这所谓的,一切的资源,都包含了什么呢?就包括了以下:shell
而,这三个 Component 之间的关系,就如图下:编程
这是我摘抄下来的两句话,基本归纳了 WSH 的用途:网络
第一句是说,WSH 是一种自动化技术;第二句是说,WSH 是一种 Admin 工具;合起来就是,WSH 主要用于自动化,一般用于 Admin 任务。
工具
早年间的系统,里面都有一个 Command Shell,人们能够往里输入,文字命令,而后,系统再回给你一堆文字。这些文字命令,既能控制系统的方方面面,也能控制电脑的运行。很快的,设计系统的人意识到,不少平常电脑操做的命令,都是不断重复的文字。因而以后的系统,就增长的新功能,就是,能够把命令存在一个文件中,而后,系统能够随时读取并执行,这个文件中储存的命令。而后,这个“命令的清单”,就被称为了,咱们都知道的,batch files(批处文件),也叫作,shell scripts,batch jobs。随后的几年,batch file 获得了不少增强,如,支持 Parameterization (参数化),就是支持程序执行时,提供 Arguments。而后,又增长了 Control Flow 的支持,就是 if 和 loop 什么的。后来,渐渐的,batch files,发展为了,一门简单的 Macro 语言。可是,batch files 语言,也有一系列的缺点和不足;如,syntax 很麻烦,而且,和其余 Windows 程序的交互,很是的局限。正是这些缺点的不足,让微软决定开发一套,不一样于传统的 Commend-Line 概念的,而是,基于,现代的 Object-Oriented 概念的,脚本技术。这套新技术,被统称为,System Scripting,也就是,系统脚本。而后从 Windows98 起,微软就推出了 WSH 和 VBScript,用于取代原来的,Batch Script 技术。WSH 提供了一个,干净整洁的,脚本环境,和一套完整的,对象模型。让咱们能够调用其余程序,和访问系统功能,VBScript 则提供了一套,逻辑清晰,结构工整的,脚本语言。这也就是,WSH 和 VBScript,的历史由来。
oop
英文全称为,Windows Script Host Object Model;我的理解,对象模型,就是对象(Object)的组织结构(图)。其实,整个 Windows 操做系统,均可以理解为,一大堆对象(Objects)的集合。一般,每一个编程环境,都会提供本身的对象模型,而后,开发人员可使用这些对象模型,解决各类问题。而,WSH 对象模型,就是 WSH 工做环境里,自带的一套,核心对象的,模型。一共自带了14个对象,各有各的做用,详见下面的说明:
this
其中,Wscript Object,是 WSH 对象模型,中的 Root Object (根对象),It is from this object that all other objects are instantiated。Wscript Object,每次开机时候,就自动被 established,因此,写代码的时候,能够拿来就用,不用再被 instantiated。例如,你能够直接使用 Wscript 的 Method,Wscript.Sleep()
。可是,其余任何Object,你要像使用它的 Method,你都须要像用 Wscript.CreateObject()
,去 Establishes an instance of the specified object,而后,才能用这个新的 instance 去调用,它旗下的 method 和 attribute。下面是,WSH 对象模型的图,再下面的表格是,上面提到的14个核心对象的做用。
google
No. | Name | Description |
---|---|---|
1 | Wscript | 主要做用是提取命令行变量, 肯定脚本文件名, 肯定 WSH 执行文件名 (wscript.exe 仍是 cscript.exe), 确认 Host 版本信息, 建立, 关连及分离 COM 对象, 写入事件, 按程序结束一个脚本文件的运行, 向默认的输出设备(如对话框, 命令行)输出信息等. |
2 | WshArguments | 主要做用是获取所有的命令行变量. |
3 | WshNamed | 负责获取指定的命令行参数集. |
4 | WshUnnamed | 负责获取未经指定的命令行参数集. |
5 | WshNetwork | 主要做用是开放或关闭网络共享, 链接或断开网络打印机, 映射或取消网络中的共享, 获取当前登录用户的信息. |
6 | WshController | 建立一个远程脚本对象. |
7 | WshRemote | 实现网络中对计算机系统的远程管理, 也可按计划对其它程序或脚本进行处理. |
8 | WshRemote Error | 做用是当一个远程脚本(WshRemote 对象)因脚本错误而终止时, 获取可用的错误信息. |
9 | WshShell | 主要负责程序的本地运行, 处理注册表项, 建立快捷方式, 获取系统文件夹信息, 处理环境变量等. |
10 | WshShortcut | 主要用于按计划建立快捷方式. |
11 | WshSpecialFolders | 用于获取任意一个 Windows 特殊文件夹的信息. |
12 | WshURLShortcut | 用于按程序要求建立进入互联网资源的快捷方式. |
13 | WshEnvironment | 用于获取任意的环境变量(如 WINDIR, PATH, 或 PROMPT). |
14 | WshScriptExec | 用于肯定一个脚本文件的运行状态及错误信息. |
若是想更多的了解,VBScript 或者 Batch Script,强烈推荐下面两本书:操作系统
惋惜好像没有中文版,并且都是1999先后的书籍了。我从网上的旧书中淘到了一本,哈哈。亲自读过第一本,确实很好。文中部份内容,也借鉴了这本书。好吧,就写这些吧!.net