有没有办法在Powershell中终止挂起的进程?

时间:2009-06-30 14:24:05

标签: com powershell

我正在使用Powershell来测试COM对象方法调用。由于设计/编码/一切都很差,这个COM对象方法只是在出错时挂起。我的默认本能是控制+ c,但这不起作用。我是否必须杀死Powershell以终止挂起的COM方法调用?

提前致谢。

3 个答案:

答案 0 :(得分:6)

您是否在COM对象上调用方法,该对象位于PowerShell进程的地址空间中?如果是,那么是的,你必须杀掉PowerShell才能解除挂断电话。

编辑 Matthew询问是否可以使用AppDomains解决此问题。

不幸的是没有它不能。这里的关键是COM对象正在执行本机代码。这意味着在COM对象挂起的位置,线程使用本机代码。您无法从托管代码中删除本机代码中的线程。在线程返回托管代码之前,甚至对.Abort()的调用也不会生效。

答案 1 :(得分:1)

对我而言,简单的方法是使用pskill

答案 2 :(得分:0)

您可以尝试:

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($obj)

或者将流程传递给Stop-Process,添加-Force也可以提供帮助。