想要脚本Windows WMI(wmiprvse.exe)释放文件上的句柄

问题描述:

我正在使用由其他人使用Windows Management Instrumentation(WMI)调用检查多个Windows服务的状态编写的VB脚本文件。此脚本按设定的时间表每隔几分钟运行一次。我需要升级/替换这些服务的.exe文件。想要脚本Windows WMI(wmiprvse.exe)释放文件上的句柄

我停止VB脚本,停止服务并卸载服务,以使它们不再出现在“服务”面板(services.msc)中。不幸的是,WMI(wmiprvse.exe)仍然对服务.exe文件有句柄。我可以通过重新启动系统来释放句柄,但是我希望尽可能避免这种情况,因此可以完全脚本化/自动升级。

有没有办法强制WMI释放它在.exe上的句柄?请记住我是与WMI合作的新手。

我也在寻找解决这个问题的办法。还想了解wmiprsve为什么在我的一些服务可执行文件上处理,而不是在其他服务上执行。

我使用的解决方法是杀死wmiprvse进程。您可以使用SysInternals命令行工具(pslist,pskill)自动获取进程ID并执行kill。

您可以简单地重新启动WMI服务(winmgmt)来强制它释放文件。如果您的服务在WMI启动时未注册,则它不会锁定这些文件。

停止服务,卸载服务,重新启动WMI,替换文件,启动服务。