背景:
我们有一个使用中央数据库的应用程序。经常会发生某些客户端崩溃的情况,从而在进程表中留下僵尸进程,从而保持与数据库的连接。这会在数据库的夜间复制/备份过程中产生问题。
愿望清单:
我想集中告诉一组指定的工作站(一些在内部,另一些在远程位置)在指定的时间运行一个命令,该命令可以执行以下列表中的其中一件事。
运行 TASKKILL 命令从进程表中删除 zoombie。
如果这没有帮助,我可以考虑强制注销活动会话
我们讨论过的另一件事是关闭工作站以节省能源,这也可以解决问题。(用户似乎不记得回家前关机)
可以通过组策略来实现吗?显然我们可以在各个工作站的调度程序中设置此功能,但这并不实际。>4 个国家/地区的 200 个 wkstns。
我们在公司网络中连接着 Windows 2003 服务器和 XP 工作站。
答案1
这实际上无法通过组策略来实现。
有几种方法可以解决此问题。如果是我,我会用 VBScript 编写整个脚本。它会解析一个包含工作站主机名的文本文件,首先杀死僵尸进程,然后强制注销。您还可以让它关闭有问题的机器。但是,我不确定您是否精通 VBScript,所以我只给您这个想法。
更简单的方法是使用一些内置的 Windows 命令来创建批处理文件。这将涉及使用以下命令:
taskkill /S 主机名/IM 映像名/F /T
logoff [sessionid] /SERVER:主机名
关机/M 主机名/F
然后您可以从任何地方运行该批处理文件,它将在相关的机器上远程运行。
答案2
您可以在脚本中添加计划任务。
因此,一个答案是编写一个添加计划任务的脚本,然后使用组策略在所有工作站上推出该脚本。
另一种方法是使用 pstools 运行命令。您可以将多个计算机名称添加到命令中,并将其保存在批处理文件中。不过这意味着将它们全部列出一次。