跟我从头学WSH(2)–Object
作者:qiqinghua
来源:青蛙的梦想
第二章 使用Object
一. Object术语
(1) 理解对象术语
Objects
object是根据功能打包, object包含代码,使得你可以将其用在自己的脚本中。
Compiled objects
最常用的object类型,是compiled object,这种类型的object编译成2进制文件,无需了解内部机制,可以把它看成是一个黑盒子。通常的表现形态为一个DLL(dynamic link library)或者ocx(Microsoft ActiveX Control file)
你能够用method和object提供的功能进行通讯。可以用用object的properties操纵数据。
每一个对象有众所周知的method和properties
(2)方法和属性
Methods
Object实用methods展示自己的功能,你无需知道方法在内部是如何实现的,只需要知道如何调用它,术语Invoke被经常用来描述调用方法的过程。
?Invoking a method
有三种方法可以调用:
Objecct.method 没有采用任何的参数
Object.Method Param1 [, Param2, … ,Paramn] 传入一个或数个参数进object
MyVariable = Object.Method([Param1, Param2, … ,Paramn]) 返回一个值。是Oebecjt运行的结果。
?Using parentheses
Methods返回数据给调用的脚本,在这种情况下,必须在括号中提供参数,即使有些methods不需要参数,仍旧需要括号
MyVariable = Object.Method()
Properties
Object采用他们的properties来展露他们的数据到你的脚本中,通常采用以下的语法:
Object.Property = Value
?一个简单的值
?一个简单的表达式
?另一个对象的属性 Object1.Property1 = Object2.Property2
?一个对象的方法的调用 Object1.Property1 = Object2.Method([Param1])
可以将一个属性返回给一个值
MyVariable = Object.Property
(3)理解实例术语
Class
类是对象的蓝本。开发者允许你重用代码,而不需要在object中重写。当你需要重用代码,你的脚本在类的基础上创建对象。对象的代码被写在类中,这些类为你的对象提供了方法和属性。
一个类-建筑师的规划和建设
一个在现实世界里类似的情况是,将其映射到一个建筑师的情况下,建筑师首先构想一个建筑的外观和如何建筑结构,为传达他对于该建筑的思想,创建一个建筑规划图和蓝本,在其中指名材料和尺寸。
在这点上,他的工作完成了,他可以将蓝图给建筑师,建筑师将根据规划构建建筑,事实上,建筑师可以构建很多类似的建筑,全部基于相同的图纸,他们可以重用蓝图很多次。当建筑完成构架后,所有者可以决定涂什么颜色,他也可以决定安转警报,家具等。
在这个模拟中,建筑师的蓝图可以类比为class, object可以类比为由蓝图创造的建筑。蓝图规定可以安装警报和家具,这可以类比为methods.
此外,蓝图没有制定装饰时候的颜色,蓝图允许在建筑物构建后指定颜色,涂刷的颜色就是属性。
Type Libraries
是类的集合,可以基于其类重构object,type libraries是被编译的文件,提交它们的类给你的脚本。通常它们被编译到dynamic link libraries(DLL)或者AcitiveX Controls文件。
Instantitation
从class创建Object的术语称为instantiation,当一个对象被实例化的时候,它继承了这个类的定义的属性和方法。
经常要采用同一个class生成多个instances,类似于采用同一张图纸创建多个房子,给每个房子标注上编号,这样即使他们从一个图纸上构建而来,也不会相互影响。
二. 创建和使用Object
(1)创建Object
创建object
Libraries
WSH library 被Wshom.ocx文件所描述,并且默认安装在windows 2000的计算机上。
这个library在脚本中被访问的名字是:wscript
Class
Wscript library包含多个classes,比如network object,允许你采用脚本执行简单的网络任务。这个对象采用以下的语法继承:
Set <Object Variable> = CreateObject("<Library>.<Class>")
An example of how to create the Network object is as follows:
Set oNetwork = CreateObject("WScript.Network")
上面的语法中,采用了createobject()函数,它接受一个字符串作为参数,然后你可以使用这个新建的object了。
当对象被实例化后,你可以采用该对象执行网络任务,比如映射一个磁盘和打印机
MapNetworkDrive and AddPrinterConnection.
Set oNetwork = CreateObject("WScript.Network")
oNetwork.MapNetworkDrive "Z:", "\\MyServer\MyShare"
Wscript.Echo oNetwork.ComputerName
(2)使用对象
Assigning an object to a variable
使用关键词set来指定一个object, 这个set key通知脚本,“名称点”采用object variable, 指向该对象代码并存储数据在内存中。
使用一个object
objFSO.CreateFolder ("C:\Test")
删除一个object
Object消耗内存,所以,一个好的习惯是当你使用完毕后就删除它们。
Set objFSO = Nothing
三。 理解对象模型
(1)定义对象模型
定义object models
描述对象模型
对象模型是一个对象的集合,被设计来执行相关的一组任务,比如管理文件系统或从数据库中读取信息,对象类,方法和属性被集合在一起,表现为对象模型
在很多状况下,在对象模型中的对象被组织在结构中,在高层或顶层,对象提供对更深入的对象的访问,比如filesystemobject object 提供访问磁盘对象,不能在不使用filesystemobject的情况下使用磁盘对象。
很多对象要求你采用层次结构,通过一个对象来访问另一个对象,更现代化的实现可以直接访问对象,比如,ActiveX data object模型可以直接访问。它们并不被组织在结构中。
对象模型举例
WSH
执行简单管理任务
ADSI
能够访问和设置活动目录功能
Active data object
可以访问数据库sql server
(2)COM Object
Component Object Model(COM) 提供一个说明和规则的集合,定义了软件如何从重用组件被构造。
COM允许一个contract被定义和指名组件提供给客户的服务。
COM也支配数据如何在客户和对象之间传输,这个进入和传出的过程,称之为data marshalling
Contracts
Contract集合object支持的方法和属性。
DCOM
扩展了COM的marshalling,使其可以支持访问网络环境
(3)在实践中的COM
Class 被programmatic Identifier定义所标示,称为ProgID
Object Identification
ProgID被存放在HKEY_CLASSES_ROOT,它告诉系统哪个.dl, .exe 或.ocx文件包含着相关联的类定义,被用于构建对象。一个ProgID由library类型和类组成,由.分隔。
Library.Class
下面的例子使用Scripting.FileSystemObject ProgID来创建一个对象实例
Set MyObject = CreateObject("Scripting.FileSystemObject")
Automation
Automation定义了在开发COM object的时候,数据类型的限制和其他限制。
Type Libraries
虽然标准的library存储在.dll或者ocx文件中,它也能存储在独立的library file中,通常采用tlb扩展名。通过分析在type library中的元数据,可以发现在能够在脚本中使用的object,methods和properties。
object browser可以使用这信息来描述一个对象的图形化的视图。
(4)使用一个对象浏览器
Microsoft Object Browser is a tool使得你可以看到type library的内部,它将信息显示为可读,图形化的表格里。
这个功能存在在office的VBA中。
四。 脚本对象
(1)脚本对象模型
Filesystemobject:使用filesystemobject object来管理本地的文件和文件夹。除此之外,可以控制存在的文件夹和文件。
你只能使用filesystemobject创建新的文本文件,如果你想创建新的word document,你必须采用word object model
Filesystemobject object 同样不支持管理ntfs文件系统权限,如果你要改变文件的安全权限,必须采用额外的组件。
Dictionary
Dictionary object是一个容器对象,你可以使用它存储任意数据项目,你可以组织这些项目使用名称或独立的关键值,你可以使用这些值重用存储的数据
举例来说,你可以使用dictionary object来存储企业的所有管理员,细节可以包括名称,电话,和email地址。你可以连接(组织)每个dictionary entry采用独立唯一的管理员负责管理的站点。
Set AdminsList = Wscript.CreateObject("Scripting.Dictionary")
AdminsList.Add "UK", "Alan : +44 (0)117 555-0100"
AdminsList.Add "Europe", "Kathie : +33 (0)122 555-0105"
AdminsList.Add "US", "Don : +1 (0)25 555-0115"
WScript.Echo "The UK administrator is: " & AdminsList("UK")
Encoder
脚本被encoder object编码,encoding process由windows encoder utility来完成。 使得脚本不可见,不可拷贝,不可编辑,但还是能够执行。
(2)WSH对象模型
WSH object model
Type library Wshom.ocx为WSH提供object model. 这个object 提供一些对象,方法和属性,这些对象、方法和属性是脚本中最常用的。
Wscript
Wscrip对象是一个内在的对象,意思是当脚本执行的时候自动创建,而不需要明确的实例化.
支持一下的方法:
Createobject: 创建一个对象
Connectobject: 连接一个已存在的对象
Disconnectobject: 对已连接对象断开连接
Getobject : 从文件里重新调用(retrieval)一个已存在对象。
Echo: 显示信息
Quit: 终结当前的脚本
Sleep: 暂停执行脚本多少毫秒
Shell
Set objShell = WScript.CreateObject("WScript.Shell")
可以使用这个脚本开始一个新的进程,创建一个快捷方式,提供环境变量,比如:windir,computername,username等。
Specialfolders: 返回window shell folder,比如desktop folder,start menu folder ,my document folder等
Shortcut: 创建一个和快捷方式关联的对象
Urlshortcut: 创建一个和url关联的对象的快捷方式
Environment: 返回操作系统的环境变量
Network
Set objNetwork = WScript.CreateObject( "WScript.Network" )
为脚本提供网络功能
List all mapped drives.
Connect and disconnect remote drives.
List all mapped printers.
Connect and disconnect remote printers.
Set the default printer.
五。常见对象模型
(1)写作数据对象
CDO对象被设计来简单的使用脚本来具有电子邮件的功能。CDO libraries 来“暴露”messaging 对象,比如folders,messages,收件人地址,附件等。
CDO name :
先前的版本叫OLE messaging,在exchange 4中首先被支持
Cdo version 1被叫做active messaging,被安装在exchange 5.0中
Cdo version 1.2安装在exchange 5.5种,包含支持scheduling meeting 和appointments
286430 : 如何使用cdo for windows 2000和本地拾取目录发送html格式邮件
286431: 如何使用cdo for wondows 2000和远程smtp服务发送html格式邮件
(2)ActiveX对象模型
ADO能够快速有效的访问和操作数据源中的数据
数据源:
数据源往往和数据库有关,比如sql serve 2000,另外,ABO使你可以访问非关系数据库,比如AD,你可以使用ADO搜索活动目录对象和属性。
Examples of data providers
要访问存储在不同格式中的数据,ADO为每一个数据类型需要一个OLE database(DB) provider。
当前的ADO OLE DB提供include:
ODBC
Index server
Sql server
Active directory directory service
Exchange 2000
ADO模型包含下列对象
Connection: 负责联系一个OLE DB数据库源(比如ADSI)
Command: 对数据库执行的命令
Error: 包含数据访问错误细节,每一次错误发生的时候刷新
RecordSet: 执行命令后返回的记录集
Fields: 记录集的一块区域
(3)ADSI
Active Directory Service Interface,之前被称作OLE Directory Service.
给与开发者和管理员访问多种数据库服务的接口的能力。
LDAP
Windows NT
NDS:使得你可以访问Novell Directory Service
NetWare 3 bindery: 可以访问早期的Novell 3。X的服务器
(4)WMI
WMI 是一个单一的,一致的应用程序编程接口,被设计来为Windows 2000服务器家族进行管理(操作系统和数据)
Web-Based Enterprise Management
WBEM是一种工业标准的管理API
WMI
WMI是WBEM的微软实现
?监视,设置和控制管理信息
?Windows 操作系统
?系统设备
?活动目录
?注册表
?性能计数器
?在管理对象上执行方法,比如,压缩一个文件或重起系统
?接受并执行一个基于事件改变,比如SNMP和Windows event view service
(5)IE
IE
是脚本主机
不能访问WSH
IIS
支持ASP