這裏首先解釋它爲什麼如此工作。也許別人可以用它來提供另一種解決方案。
我使用基於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
在服務器上創建如下所示下
如果只是在這個遠程會話啓動一個進程:
[192.168.183.100]: PS C:\Users\jpb\Documents> Start-Process calc.exe
新工藝是wsmprovhost.exe
孩子如下所示
下,如果停止遠程會話wsmprovhost.exe
消失,所以子進程。
解釋是,wsmprovhost.exe
和這個啓動的所有進程屬於同一個工作。
默認情況下,一方面,這工作並不支持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消失,但根據服務器上展示新工藝留在這兒:
的過程開始與WMI不屬於任何工作。在法國我會說「Ce qu'il fallaitdémontrer」
感謝分析JPBlanc。我目前的解決方法是簡單地使用遠程會話來收集用於從遠程會話外部使用'PsExec -d'啓動進程的信息。這種方式當遠程會話被終止時,以'PsExec -d'開始的進程不是。 – davidk01 2012-01-03 04:13:23
@ davidk01我想我找到了一個乾淨的解決方案,我編輯了我的答案來解釋它。 – JPBlanc 2012-01-04 09:31:32
感謝您的好評。它爲我節省了更多的搜索時間,如何做到這一點。 – 2012-11-15 07:00:11