脚本的故事(2004年9月)
运行脚本命令
那么,与在脚本运行时查询脚本并获取有关脚本所执行操作的信息相比,到底有没有 更好的办法呢?没有,当然没有,除非您能在脚本运行时真的向其发送命令。但这是很荒谬的;在脚本运行时无法向其发送命令。难道真的能行……
让我们看另一个简单的小脚本,它返回有关 Internet Explorer 附加组件的信息:
strComputer = "atl-ws-01" Set objWMIService = GetObject("winmgmts:\" & strComputer _ & " ootcimv2ApplicationsMicrosoftIE") Set colIESettings = objWMIService.ExecQuery _ ("Select * from MicrosoftIE_Object") For Each strIESetting in colIESettings Wscript.Echo "Code base: " & strIESetting.CodeBase Wscript.Echo "Program file: " & strIESetting.ProgramFile Wscript.Echo "Status: " & strIESetting.Status Next
正如所编写的一样,此脚本连接到远程计算机 (atl-ws-01),然后从 MicrosoftIE_Object 类中检索某些信息。又是老一套,是吧?我们想通过在 Script Debugger 中分步执行来测试此脚本,因此,我们装载此脚本,按 F8 键运行第一行代码,该行将变量 strComputer 的值设置为 atl-ws-01。
但是,此时我们意识到有一个问题:我们突然想起计算机 atl-ws-01 没有联机。因为我们无法连接到该计算机,所以脚本注定会失败。您一定以为我们必须退出 Script Debugger,更改脚本(将其指向另一台计算机),然后重新运行脚本,是吧?
错。脚本有问题吗?问题是出在我们要连接到由变量 strComputer 表示的计算机。这没有什么问题,只是 strComputer 的值当前为 atl-ws-01,而该计算机没有联机。但您知道吗?实际上,这并不是 什么问题。在我们运行用于连接到远程计算机的代码行之前,我们只需要将 strComputer 的值更改为已联机的 某台计算机即可(例如,我们可以将 strComputer 更改为“.”以便针对本地计算机运行脚本)。您猜该怎么做?是的,这次您说对了,我们就是在命令窗口中做到这一点的:
只需在命令窗口中键入相应的命令并按 Enter 键;果不其然,脚本中的 strComputer 的值将更改为圆点 (.)。这真的 很棒!
您也可以输入更复杂的命令。例如,请考虑以下脚本,它用于返回本地计算机上安装的所有服务的名称:
strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer _ & " ootcimv2") For Each objItem in colItems Wscript.Echo "Name: " & objItem.Name Next
非常棒,是吧?美中不足的是缺少了一行代码,该行代码实际上从 Win32_Service 类检索信息。该脚本应该 类似于以下内容:
strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer _ & " ootcimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_Service") For Each objItem in colItems Wscript.Echo "Name: " & objItem.Name Next
不过,没有关系。只需在 Script Debugger 中装载脚本,并分步执行前两行代码。在到达缺少的第三行代码时,不要慌;在命令窗口中键入缺少的代码行,然后按 Enter 键:
只需从此处单步执行该代码,脚本就会报告本地计算机上安装的所有服务的名称,这与预想的一模一样。
- 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
- 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。