我们的本地 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 包含正确的进程 ID。脚本输出到屏幕:PSKill.exe 6884 但应该执行命令的行什么也没做。
如果我输入命令,它工作正常。为什么当我输入 PsKill 时它工作正常,而从 VbScript 中输入时却不工作?
答案1
尝试交换线路。这将使其在自己的窗口中显示该过程并等待其完成。
WshShell.Run "PSKill.exe " & W3WP.ProcessId, 1, true
当然,如果速度太快,你最好将其传输到日志文件
WshShell.Run "PSKill.exe " & W3WP.ProcessId & ">> log.txt"
在我看来它应该可以工作。VBScript 是否在具有终止任务权限的用户帐户下运行?
答案2
尝试在脚本中使用“-accepteula”作为命令行参数来运行它。这些工具在第一次运行时会弹出 EULA,如果没有人点击“接受”,它们往往会挂起。