在远程会话中启动后台任务,在删除会话时不会被杀死

时间:2011-12-30 03:21:00

标签: powershell powershell-v2.0 psexec powershell-remoting

我一直在使用PsExec -d在远程PowerShell会话中启动控制台应用程序,因为我希望这些应用程序在执行某项任务时在后台运行。问题是我希望后台应用程序继续运行,即使我使用Remove-PSSession终止远程PowerShell会话。当前发生的事情是远程PowerShell会话被杀死所以在PsExec -d的帮助下启动的所有进程都是如此。我猜它与进程树有关,以及windows如何管理这些事情的生命周期。

有没有人知道如何启动远程后台进程并让该进程在远程会话被杀后仍然存在?

1 个答案:

答案 0 :(得分:25)

首先解释为什么它如此起作用。也许其他人可以使用它来带来另一种解决方案。

我使用基于WMI的解决方案编辑了我的答案。

进入远程会话时:

PS C:\Users\JPB> enter-PSSession -ComputerName 192.168.183.100 -Credential $cred
[192.168.183.100]: PS C:\Users\jpb\Documents>

您在服务器上创建了一个名为wsmprovhost.exe的流程,如

所示

enter image description here

当您在此远程会话中启动进程时:

[192.168.183.100]: PS C:\Users\jpb\Documents> Start-Process calc.exe

新流程是wsmprovhost.exe的孩子,如

所示

enter image description here

如果您停止远程会话wsmprovhost.exe消失,那么子进程就会停止。

解释是wsmprovhost.exe和由此开始的所有进程属于同一个工作。

enter image description here

默认情况下,一方面,此作业不支持JOB_OBJECT_LIMIT_BREAKAWAY_OK限制标志,该标志不允许我们使用CREATE_BREAKAWAY_FROM_JOB标志启动进程,另一方面此作业支持JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE限制标志,导致与作业关联的所有进程在作业的最后一个句柄关闭时终止。

它可能存在一个配置WinRM以支持支持JOB_OBJECT_LIMIT_BREAKAWAY_OK的作业的解决方案。


编辑:

因此,阅读Microsoft documentation,我发现了一种记录在案的技术方法,您可以通过WinRM启动程序,但是在另一项工作中。默认情况下,与作业关联的进程使用CreateProcess创建的进程与作业相关联;但是,使用 Win32_Process.Create 创建的流程与作业无关。

因此,如果在远程会话中,您使用WMI创建一个进程:

PS C:\silogix> $ps = New-PSSession -ComputerName 192.168.183.100 -Credential $cred
PS C:\silogix> Enter-PSSession -Session $ps
[192.168.183.100]: PS C:\Users\jpb\Documents> Invoke-WmiMethod -path win32_process -name create -argumentlist "calc.exe"



__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ProcessId        : 1236
ReturnValue      : 0

[192.168.183.100]: PS C:\Users\jpb\Documents> exit
PS C:\silogix> Remove-PSSession $ps

如果停止远程会话,wsmprovhost.exe消失了,但新进程仍然停留在服务器上,如下所示:

enter image description here

使用WMI启动的进程不属于任何作业。在法语中我会说“Ce qu'ilfallaitdémontrer”