杀死由invoke-command启动的远程作业

时间:2011-08-21 17:49:00

标签: windows powershell kill-process invoke-command

使用后台进程终止invoke-command启动远程作业的简单方法是什么?

我踢远程PS脚本来运行旧版exe文件,需要一种方法来终止该过程。

我将首先使用停止作业,但在阅读时它只适用于本地进程。

然后我将使用Remove-job -force命令,但如果我理解正确,它就无法终止运行进程直到它完成(再次我的远程ps脚本将启动另一个进程来运行exe文件)。

我正在阅读我可以使用wmi terminate命令终止进程,但我不知道如何获取远程进程的PID(我不能使用名称,因为我可以杀死其他用户的进程)

实现目标的最佳途径是什么?

我的脚本看起来像这样:

invoke-command -computername server1,server2,server3..etc -script-block {my.exe} -asjob

loop to wait for all processes to complete and report progress

   check for CTRL-C press and kill all remote instances on {my.exe}

2 个答案:

答案 0 :(得分:0)

查看此答案,您可以将启动过程命令添加到脚本块并返回pid或将其保存到文本文件中以供稍后参考。

PowerShell - get process ID of called application

答案 1 :(得分:0)

今天上午从工作中检查好了,这可以从调用脚本中正常工作:

get-job | remove-job -force 

我对MSDN doc感到困惑,他说:

When you stop a background job, Windows PowerShell **completes** all tasks that are pending in that job queue and then ends the job