2

我们需要从会话 0 隔离到会话 1 中的登录用户生成进程。此任务是通过使用完成的psexec,这完全发生在同一台机器上,但我无法获得子进程的输出显示在 psexec 中。由于这在构建服务器上运行,我不想将输出重定向到文件等

这是一个不起作用的示例调用:

C:\>PsExec.exe cmd.exe -i 1 -u user -p pwd /C echo foo

结果无处显示任何“foo”

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

cmd.exe exited with error code 0.

有效但目前无用的一件事是省略-i并添加\\localhost

C:\>PsExec.exe  \\localhost cmd.exe  /C echo foo

返回:

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


foo
cmd.exe exited on localhost with error code 0.

但是当我指定会话 1 时,它会中断。这个:

C:\>PsExec.exe cmd.exe -i 1 -u user -p pwd \\localhost /C echo foo

再次foo对我显示不。

同样:目的不是tee或重定向echo foo到某个文件,然后type myfile.log作为第二步执行,而是接收原始 psexec 中的输出。

我们绑定到会话 1,因为我们需要 Direct 3D 上下文,将服务配置为“允许与桌面交互”在这里没有帮助。

4

1 回答 1

3

我不认为你问的是可能的。在远程psexec -i机器上以交互方式运行该进程,因此包括控制台 I/O 在内的一切都发生在远程机器上的相应会话中。

这种-i行为实际上是有道理的。例如,假设您运行了一个需要用户输入的批处理文件,例如有一个pauseset /p. -i需要在目标机器上输入该输入,而不是在您运行的机器上输入psexec。同样,输出(仅)发送到远程机器。

您问题的另一部分是根本没有计算机名称之间psexec \\localhost的区别。psexec这似乎是一个未记录的psexec怪癖,之前已经注意到并报告过,例如(在两行之间有一些阅读)在Redirect output of process start local with PSExec 处

于 2016-02-11T16:41:44.427 回答