07使用脚本管理Windows网络 第七部分.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:52KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

07使用脚本管理Windows网络 第七部分.doc

07使用脚本管理Windows网络第七部分.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

使用脚本管理Windows网络第七部分:修复神秘的错误本章关于使用脚本管理Windows网络,阐述了当使用我们之前开发的ChangeIPAddress.vbs脚本去修改远程计算机IP地址时,如何修复其产生的“远程程序调用失败”的错误。原文发表于WindowsNetworking.com。在前面的文章“远程脚本初探”,我们使用之前开发的ChangeIPAddress.vbs脚本,将它修改了后用以修改远程计算机的IP地址。下面就就是我们修改的脚本:OptionExplicitDimobjWMIServiceDimobjNetAdapterDimstrComputerDimstrAddressDimarrIPAddressDimarrSubnetMaskDimcolNetAdaptersDimerrEnableStaticIfWScript.Arguments.Count=0ThenWscript.Echo"Usage:ChangeIPAddress.vbsnew_IP_address"WScript.QuitEndIfstrComputer="xp2"strAddress=Wscript.Arguments.Item(0)arrIPAddress=Array(strAddress)arrSubnetMask=Array("255.255.255.0")SetobjWMIService=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")SetcolNetAdapters=objWMIService.ExecQuery("Select*fromWin32_NetworkAdapterConfigurationwhereIPEnabled=TRUE")ForEachobjNetAdapterincolNetAdapterserrEnableStatic=objNetAdapter.EnableStatic(arrIPAddress,arrSubnetMask)Next这一行:strComputer="xp2"告诉我们,脚本的目标计算机名是XP2。远程计算机XP2原先的IP地址是172.16.11.43。现在,当我们从管理工作站XP上输入ChangeIPAddress.vbs172.16.11.65运行脚本时,出现了下列情况:1.脚本起作用了,如XP2的地址将从172.16.11.43改为172.16.11.65;2.脚本需要花费很长的时间才执行完;3.脚本返回以下错误:C:\tools\ChangeIPAddress.vbs(23,6)SWbemObjectEx:Theremoteprocedurecallfailed.我们怎样处理这些结果呢?简单的解决方法其实我们可以对自己说,“好了,既然它已经起作用了,那么就让我们忽略这个错误吧。”对于这种说法是可以理解的。毕竟,任何现实的管理员都知道IT不是一个精确的科学工作,当我们无法设计妥善的解决方法时,我们往往最终采用“应急方案”来解决问题。因此,我们该如何忽略这个错误呢?只需在标头节添加以下这一行:OnErrorResumeNext换句话说,我们脚本的头部将是这样的:OptionExplicitOnErrorResumeNextDimobjWMIServiceetc.现在,我们就不会看到错误,而且我们的脚本也可以正常工作了。但是,它仍然需要一段较长的时间来执行,事实上,足足超过一分钟。这又该怎么办呢?解决错误讯息错误消息有时是很隐秘的,这是其中的一个。这里是又一个错误消息:SWbemObjectEx:Theremoteprocedurecallfailed.这是产生错误的那一行代码:errEnableStatic=objNetAdapter.EnableStatic(arrIPAddress,arrSubnetMask)现在这行代码工作了(如,目标计算机IP地址修改了)但它抛出了一个错误,为什么呢?让我们先设法理解SWebObjectEx的作用。从MSDN上快速搜索到这个网页,上面有这样的说明:ExtendsthefunctionalityofSWbemObject.ThisobjectaddstheRefreshmethodforSWbemRefresherobjects.很好。这样看来SWbemObjectEx只是给SWbemObject增加了更多的功能。那么,SWbemObject又是什么呢?ContainsandmanipulatesasingleWMIobjectclassorinstance.那么,这是又意味着什么呢?网页上告诉了我们很多,但是却又相当怪异。但是,简而言之,SWbem