У нас есть сайт на нашем локальном сервере IIS6 Windows 2003, который иногда блокируется, и мы хотели бы, чтобы VbScript завершил процесс. Он находится в папке system32. Я запускаю эти тесты на локальной машине.
Для простоты в моем файле VbScript просто есть такие строки:
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "PSKill.exe " & W3WP.ProcessId
WshShell.Run "PSKill.exe " & W3WP.ProcessId
WScript.Echo "Killed Process"
Полученный ранее в сценарии, W3WP.ProcessId содержит правильный идентификатор процесса. Скрипт выводит на экран: PSKill.exe 6884 Но строка, которая должна выполнять команду, ничего не делает.
Если я наберу команду, она будет работать нормально. Почему PsKill нормально работает, когда я его набираю, но не из VbScript?
Попробуйте запустить его в сценарии с параметром -accepteula в качестве аргумента командной строки. Эти инструменты открывают лицензионное соглашение при первом запуске, и если не на кого нажать кнопку «Принять», они, как правило, просто зависают.
Попробуйте поменять строчку местами. Это позволит ему показать процесс в собственном окне и дождаться его завершения.
WshShell.Run "PSKill.exe " & W3WP.ProcessId, 1, true
Конечно, если это пойдет слишком быстро, вам может повезти, если вы подключите его к файлу журнала.
WshShell.Run "PSKill.exe " & W3WP.ProcessId & ">> log.txt"
Похоже, мне это должно сработать. Работает ли VBScript под учетной записью пользователя с разрешениями на завершение задачи?