本文主要是介绍WSH(WScript.Shell)技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.概述
虽说不是只有NT5才有WSH,但NT5(WINDOWS2000)一定有WSH的。实际上,你在WIN98+PWS里,或者NT4+IIS4里,你就能找到
WSH。
WSH是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境,在这个环境中,预定义了一些对象,同时也可以使用
COM里的其他对象。他使用一种脚本引擎来对脚本解释执行,微软自己支持VBscript和Jscript,第三方也可以开发自己的脚本引
擎。
具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),然后用一个程序对他解释执行,这个程序就叫
Windows scripting Host,程序的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器里有没有这两个
文件,就知道有没有WSH了。这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。同时,他完成的功能也非常
像批处理文件,只不过多了些控制。
我主要用WSH来完成一些繁琐的、通常需要我反复操作才能完成的任务,比如给大量目录设置ACL,或者创建大量的目录等等。
虽然这也可以编写VB或VC程序来实现,不过比起脚本来,实在麻烦,至少需要那么大的环境,而脚本只要一个写字板就成。用WSH
技术来配置服务器,包括创建用户,创建邮箱,创建目录,创建站点,设置ACL,设置FrontPage ServerExtention,我将在WSH实
用讲座中分几讲详细介绍。
2.组成
WSH自带的几个内置对象包括:
1.由 Wscript.exe 提供的对象
Wscript 作为 Wscript 公开给脚本引擎。
WshArguments 未公开;通过 Wscript.Arguments 属性访问。
2.由 WSHom.Ocx 提供的对象。
WshShell 自动对象。
ProgID 是 Wscript.WshShell。
WshNetwork 自动对象。ProgID 是 Wscript.WshNetwork。
WshShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshUrlShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshCollection 未公开;通过 WshNetwork.EnumNetworkDrives 或 WshNetwork.EnumPrinterConnection 方法访问。
WshEnvironment 未公开;通过 WshShell.Environment 属性访问。
WshSpecialFolders 未公开;通过 WshShell.Folder 属性访问。
他们主要可以完成环境变量的获取,网络登陆,驱动器映射,快截方式创建,程序加载,特殊文件夹(如系统文件夹)信息获
取等功能。
如果你的系统里支持ADO等COM部件,你同样可以使用。
3.示例
下面这个例子演示打开写字板查看文本文件,同时创建一个文本文件并写入一段话,你可以把他拷贝到写字板中,然后以.vbs
为后缀存盘,之后双击他,
'test.vbs
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.scriptFullName)
'上面用SHELL对象启动程序
Set fs = Wscript.CreateObject("scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:/testfile.txt", True)
a.WriteLine("这是一个测试。")
a.Close
'用COM对象scripting.FileSystemObject操作文本文件
4.哪里找到学习材料
在PWS和IIS4的产品文档里有非常齐全的WSH文档,建议大家先学习学习,了解了解WSH的基础知识。
原文请到WSH(WHITE的小家)(http://wwwasp.yeah.net )
其实就是读注册表,不过如果能获得机器的IP配置等信息,以后配置IIS时就简单了。下面的脚本读出机器的所有可用IP地
址,子网掩码,却省网关等信息:
代码:
--------------------------------------------------------------------------------
Option Explicit Dim WSHShell Dim sNic, sMan Dim Gateway Dim IPAddress Dim SubnetMask Dim i Dim
sTcpipRegKey Dim bIsDHCP Set WSHShell = CreateObject("Wscript.Shell") sNic = WSHShell.RegRead
("HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/NetworkCards/1/ServiceName") If sTcpipRegKey
<> "Microsoft" And Err.Number = 0 Then sTcpipRegKey = "HKLM/SYSTEM/CurrentControlSet/Services/" & sNic
& "/Parameters/Tcpip/" bIsDHCP = WSHShell.RegRead(sTcpipRegKey & "EnableDHCP") If bIsDHCP Then
Gateway = WSHShell.RegRead(sTcpipRegKey & "DhcpDefaultGateway") IPAddress = WSHShell.RegRead
(sTcpipRegKey & "DhcpIPAddress") SubnetMask = WSHShell.RegRead(sTcpipRegKey & "DhcpSubnetMask")
MsgBox ("Defaul
这篇关于WSH(WScript.Shell)技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!