Неожиданное поведение в VBScript с SendKeys
Я пытаюсь создать 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 "" WScript.Sleep 800 sw.SendKeys "yes" sw.SendKeys "" WScript.Sleep 10000 sw.SendKeys "exit" sw.SendKeys ""
К сожалению, когда я запускаю этот скрипт, он, кажется, пропускает некоторые символы из SendKeys
вызовов методов. Если я запускаю его со своего компьютера (Windows 7), я обычно могу передать ему «достаточно» символов для завершения операции, но когда я пытаюсь запустить тот же сценарий на сервере (Windows Server 2008 R2 - подключен через RDP), он выходит полностью из строя. Смотрите скриншот ниже для примера после одной особенно «неправильной» попытки.
Я пытался поместить задержку между каждой из команд и ее соответствием , но это только ухудшает ситуацию. Я попытался заключить текст в круглые скобки на тот случай, если он как-то связан с синтаксисом вызова метода, но это тоже не помогло.
Из того, что я могу сказать, кажется, что командная строка просто не в состоянии «поспевать» за 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" WScript.Sleep 100 sw.SendKeys "e" WScript.Sleep 100 sw.SendKeys "s" WScript.Sleep 100 sw.SendKeys "t" WScript.Sleep 100 sw.SendKeys "a" WScript.Sleep 100 sw.SendKeys "r" WScript.Sleep 100 sw.SendKeys "t" WScript.Sleep 100 sw.SendKeys "" WScript.Sleep 800 sw.SendKeys "y" WScript.Sleep 100 sw.SendKeys "e" WScript.Sleep 100 sw.SendKeys "s" WScript.Sleep 100 sw.SendKeys "" WScript.Sleep 10000 sw.SendKeys "e" WScript.Sleep 100 sw.SendKeys "x" WScript.Sleep 100 sw.SendKeys "i" WScript.Sleep 100 sw.SendKeys "t" WScript.Sleep 100 sw.SendKeys "" wScript.quit
Хотя этот обходной путь, кажется, работает, он кажется немного «грубым» и на самом деле не решает проблему, лежащую в основе, поэтому я все еще интересуюсь любыми мыслями или предложениями.
ПРИМЕЧАНИЕ. Хотя это позволяет мне запускать VBScript вручную из командной строки, у меня все еще возникают проблемы с его запуском из запланированной задачи. Кажется, он запускается и заканчивается, но на самом деле брандмауэр никогда не перезапускается. Не важно ... Я знаю, почему он не запускается из запланированной задачи, и мне нужно будет придумать лучший сценарий для выполнения этой конкретной операции.
0 ответов на вопрос
Похожие вопросы
-
7
Почему я не хочу запускать Windows Server 2008 R2 Enterprise x64 вместо Windows 7 Ultimate x64?
-
1
Как показать содержимое окна при перетаскивании в Windows Server 2008 R2?
-
7
Создание одного большого непрерывного пространства из 4 дисков
-
-
2
Подходит ли Forefront Client Security для рабочей станции на основе Win2008R2?
-
4
Добавить драйверы сетевого принтера в Windows 7 / Server 2008 R2?
-
2
Где я могу отключить предупреждение ActiveX и плагинов в IE8?
-
1
Windows Server 2008 R2 - псевдоним или аббревиатура
-
1
Как найти IP-адрес в электронной таблице Excel?
-
3
Центрировать текст в документе Word
-
6
Windows Server 2008 R2 и Windows 7 Ultimate