带有SendKeys的VBScript中出现意外行为
我正在尝试创建一个VBScript,我可以从计划任务运行以重新启动我们的SonicWall防火墙。防火墙是一种“低端”商业模式(TZ400),我经常不得不重新启动它,因为我们的互联网连接似乎陷入困境(这是我以后需要研究的另一个问题)。 我在另一个站点上找到以下代码,plink.exe用于我的环境并对其进行修改: Set sw= CreateObject("WScript.Shell") sw.run"C:\plink\path\Plink.exe -ssh adminuser@X.X.X.X -pw adminpassword" WScript.Sleep 500 sw.SendKeys "restart" sw.SendKeys "{Enter}" WScript.Sleep 800 sw.SendKeys "yes" sw.SendKeys "{Enter}" WScript.Sleep 10000 sw.SendKeys "exit" sw.SendKeys "{Enter}" 不幸的是,当我运行这个脚本时,它似乎跳过了SendKeys方法调用中的一些字符。如果我从我的机器(Windows 7)运行它,我通常可以让它传递“足够”的字符以完成操作,但是当我尝试在服务器上运行相同的脚本时(Windows Server 2008 R2 - 我已经通过RDP连接,它完全变得混乱。在一次特别“错误”尝试之后,请参阅下面的屏幕截图。 我已经尝试在每个命令之间加一个延迟并且它是相应的{ENTER},但这似乎使它变得更糟。我已经尝试将文本括在括号中,以防万一它与方法调用的语法有关,但这也无济于事。 据我所知,似乎命令提示符SendKeys由于某种原因根本无法“跟上”该方法。有没有其他人经历过这个问题,有没有人建议避免或绕过它的最佳方法?例如,有没有办法以某种方式“减慢”脚本的执行速度?在此先感谢您的任何建议。 编辑:我已经能够通过改变脚本来在服务器上成功执行脚本,以便在每个字符之间分别发送100毫秒的睡眠时间: Set sw= CreateObject("WScript.Shell") sw.run"C:\plink\path\Plink.exe -ssh adminuser@X.X.X.X -pw adminpassword" WScript.Sleep 500 sw.SendKeys "r" …