gpt4 book ai didi

powershell - 在远程 session 中启动后台任务,当 session 被删除时不会被终止

转载 作者:行者123 更新时间:2023-12-04 02:44:11 25 4
gpt4 key购买 nike

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

有没有人知道我如何启动远程后台进程并让该进程在远程 session 被终止后仍然存在?

最佳答案

这里首先解释它为什么会这样。也许其他人可以使用它带来另一种解决方案。

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

当您进入远程 session 时:

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

当您在这个远程 session 中简单地启动一个进程时:
[192.168.183.100]: PS C:\Users\jpb\Documents> Start-Process calc.exe

新进程是 wsmprovhost.exe 的子进程如下所示

enter image description here

如果您停止远程 session 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 创建的进程 与工作无关 .

因此,如果在远程 session 中使用 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

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

enter image description here

以 WMI 启动的进程不属于任何 Job。用法语我会说“Ce qu'il fallait démontrer”

关于powershell - 在远程 session 中启动后台任务,当 session 被删除时不会被终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8675847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com