2012-05-23 35 views
1

我可以在UNIX上啓動一個持久的過程有:如何PSRemote開始procdump,使得它在會議結束後仍然存在結束

nohup process & 

它將繼續運行後關閉我的bash會話。我似乎無法在Windows上執行PowerShell遠程處理。我可以用服務器打開一個PSRemote會話並啓動一個進程,但只要關閉該會話,它就會消失。我的假設是這是一個強大的沙箱的好處,但這是一個好處,我寧願工作在某種程度上。有任何想法嗎?

到目前爲止,我已經試過:

$exe ='d:\procdump.exe' 
$processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps' 
1) [System.Diagnostics.Process]::Start($exe,$processArgs) 
2) Start-Job -ScriptBlock {param($exe,$processArgs) [System.Diagnostics.Process]::Start($exe,$processArgs)} -ArgumentList ($exe,$processArgs) 
3) start powershell {param($exe ='d:\procdump.exe', $processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps') [System.Diagnostics.Process]::Start($exe,$processArgs)} 
4) start powershell {param($exe ='d:\procdump.exe', $processArgs = '-ma -e -t -n 3 -accepteula w3wp.exe d:\Dumps') Start-Job -ScriptBlock {param($exe,$processArgs) [System.Diagnostics.Process]::Start($exe,$processArgs)} -ArgumentList ($exe,$processArgs)} 

程序運行起來,直到我關閉會話,那麼procdump收割。關於procdump最酷的事情是它會自我終止,我想離開它利用這一事實。

我一直在遠程啓動ADPlus,打開會話,並終止會話以終止捕獲。這很方便,但是它需要進行非常多的輪詢,檢查和決定在填滿硬盤驅動器之前殺死捕獲進程的適當時機,但是捕獲足夠的轉儲纔能有用。我可以讓procdump無限期地運行,同時等待適當的觸發器,並且當它捕獲足夠的數據時它就會死掉。這是可愛的。

我只需要讓procdump在我終止遠程會話後繼續運行。這可能不值得創建一個procdump計劃任務並啓動它,但這是我剩下的最後一個想法。

謝謝。

回答

0

這不是直接可能的。間接地,是可以創建遠程啓動的任務或服務,但只是將進程推入SYSTEM空間不是。

我解決了我的問題,通過產生一個本地作業來啓動遠程作業並保持活動一段需要的時間。本地作業保持遠程會話打開,然後在適當的時間死亡,並且父本地進程能夠繼續不間斷地運行,並且如果我恰好在意,可以使用ReceiveJob獲取遠程procdump的返回值。