2011-08-05 57 views
1

我正在编写一个Powershell脚本来完成一大堆事情,完成后它将作为计划任务运行。出于这个原因,我希望能够在开始运行脚本时检查旧实例是否仍然存在,并在旧脚本存在时将其杀死。监控powershell脚本挂起的实例

我想我会用这样的:

$process = Get_Process | $name 
$process.kill 

但如何以简单的方式$ name变量?

有没有人有更好的建议? 最好的问候, Gísli

+2

你确定没有办法阻止脚本挂起吗?我会专注于创建可靠的脚本,而不是诉诸于杀死进程。 – Rynant

+0

@Ryant - 当然我正在努力做到这一点,但我需要这个作为我的应用程序的安全网,因为它将在我无权访问的服务器上运行。这只是为了确保我不累积大量流程并消耗服务器资源。 – Gisli

回答

2

可以在计划任务配置窗口做到这一点。这些设置取决于您正在使用的操作系统。

编辑:也就是说,你可以配置一段时间后(即当你的下一个开始时)被杀死的任务。

+0

谢谢。这可能是一个选择,我必须与我的导师核对。我正在重写一个他用perl编写的脚本,他在那里有一个函数来杀死进程。这可能是因为它必须在多个平台上运行。 – Gisli

1

为什么你需要得到的名字? Get-Process返回高保真Process对象,您可以直接对其进行操作。

要获得某个特定名称的进程,请使用$n = Get-Process notepad,然后执行$n.kill()来杀死它。如果您确实需要再次检查名称,请执行$n.Name。要查看您可以使用的属性和方法,尝试$n | get-member

并确保您阅读手册:http://technet.microsoft.com/en-us/library/dd347630.aspx

+0

这没有解决@ Gisli的问题。可能有多个PowerShell进程正在运行,脚本如何知道应该杀死哪一个?一个powershell.exe进程将用于脚本本身,一个可以是活动控制台会话,另一个可以来自不同的任务等。 – Rynant

+0

@Rynant - 当然。我正在解决他关于get-process的具体问题。帮助他找到解决方案。 stackoverflow的目的不是为了让OP能够完成整个事情。 – manojlds

+0

@manojlds感谢提示 – Gisli