我如何PSRemote开始procdump,使其在会话结束后持续存在

时间:2012-05-23 19:02:05

标签: powershell-remoting

我可以使用以下命令在unix上启动持久进程:

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计划任务并启动它,但那是关于我离开的最后一个想法。

感谢。

1 个答案:

答案 0 :(得分:0)

这不是直接可行的。间接地,是的,可以创建任务或服务并远程启动,但是简单地将进程推送到SYSTEM空间不是。

我通过生成本地作业来解决我的问题,以启动远程作业并在所需的时间段内保持活动状态。本地作业保持远程会话打开然后在适当的时间死亡,并且父本地进程能够继续不间断地运行并且如果我在意的话,用ReceiveJob收集远程procdump的返回值。