好吧,这几天断断续续地困扰着我。我在一个客户站点,他们有许多定制的、内部编写的、在 Windows 2008R2 IIS 服务器上运行的服务。问题是其中一些服务一直挂起,它们被困在“停止”状态,杀死它们的唯一方法是打开进程资源管理器并杀死线程。在任何人谈论使用“runas”,或以本地管理员或服务所有者身份登录之前,我们已经经历了所有这些。
问题在于可执行文件本身。另一个国家的开发团队将对此进行研究,但至少需要 4-5 个月,我们不确定他们是否会做对。
我有一个 Powershell 脚本来定期检查服务,它能够确保服务正在运行,如果没有,则强制停止并重新启动服务,然后它会发送一封电子邮件以确认操作。但是,对于提到的这些特定服务,它无能为力。它们不能在任务管理器、taskkill 或进程资源管理器中被杀死(除非有人杀死线程)它只是说访问被拒绝。可以在进程资源管理器中更改权限并将其终止,但这是一个比终止线程更长的过程。
为了让事情变得更加困难,我不能使用进程名称,因为在这台服务器上还有另外两个网站使用同名的 exe,只是在不同的文件夹中。我所追求的是一种找到并杀死进程ID的线程的方法,我已经通过我的脚本获得了这个,所以脚本的其余部分可以完成重新启动所述服务的任务。目前该服务在整个白天和晚上都以不一致的方式死亡,支持人员必须 RDP 到服务器上,打开进程资源管理器,找到有问题的进程并杀死线程然后重新启动服务。对于这些已经过度工作的人来说有点麻烦,特别是如果我们可以让 powershell 自动完成。
希望有人可以在这方面提供帮助。提前致谢。