2011-12-30 37 views
8

我一直在使用PsExec -d在遠程PowerShell會話中啓動控制檯應用程序,因爲我希望這些應用程序在後臺運行,同時執行某些任務。問題是,即使我使用Remove-PSSession殺死遠程PowerShell會話,我也希望後臺應用程序繼續運行。目前發生的情況是,一旦遠程PowerShell會話被終止,所有在PsExec -d幫助下啓動的進程。我猜測它與流程樹有關,以及Windows如何管理這些事情的生命週期。在遠程會話中啓動後臺任務,當會話被刪除時不會被終止

有沒有人有任何想法如何啓動遠程後臺進程,並讓該進程在遠程會話被終止後仍然存在?

回答

22

這裏首先解釋它爲什麼如此工作。也許別人可以用它來提供另一種解決方案。

我使用基於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的,但在onother工作的程序文件的技術途徑。默認情況下,與作業關聯的進程使用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'il fallaitdémontrer」

+1

感謝分析JPBlanc。我目前的解決方法是簡單地使用遠程會話來收集用於從遠程會話外部使用'PsExec -d'啓動進程的信息。這種方式當遠程會話被終止時,以'PsExec -d'開始的進程不是。 – davidk01 2012-01-03 04:13:23

+0

@ davidk01我想我找到了一個乾淨的解決方案,我編輯了我的答案來解釋它。 – JPBlanc 2012-01-04 09:31:32

+1

感謝您的好評。它爲我節省了更多的搜索時間,如何做到這一點。 – 2012-11-15 07:00:11

相關問題