PSExec 的交互模式不适用于控制台应用程序

PSExec 的交互模式不适用于控制台应用程序

我正在尝试使用 PSExec 在交互状态下启动远程计算机上的控制台应用程序。当我运行如下命令时:

PsExec.exe -s -d -i 1 \\MyServer notepad.exe

它可以正常启动记事本。如果我运行以下命令:

PsExec.exe -s -d -i 1 \\MyServer C:\Temp\MyConsoleApp.exe

它启动了命令窗口,但据我所知什么也没做。例如,当我在本地运行控制台应用程序时,它每 5 秒显示一次“心跳”,但当我远程运行它时,命令窗口中什么都没有显示。.exe 确实在任务管理器中显示为一个进程。有什么想法吗?

答案1

我认为您必须使用 -w 设置工作目录:

PsExec.exe -s -d -i 1 -w c:\temp \\MyServer MyConsoleApp.exe

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

答案2

如果没有出现窗口,很可能是因为 psexec 调用中的会话 id 错误。

它被设置为 -d 标志后的数字。

您想要的 ID 号将出现在 taskmgr.exe 的“用户”选项卡上的列表的“ID”列中。它通常是 1,但也可能不是。省略该数字也会导致不出现窗口。

例如,我跑了:

psexec -i -d -s c:\windows\regedit.exe

(如其他地方所建议的)虽然我收到一条消息:“... regedit.exe 于 ... 启动,进程 ID 为 ...”,但没有出现任何窗口,尽管我可以在 taskmgr.exe 中看到它正在使用指示的进程 ID 运行。

但是,当我跑步时:

psexec -s -d -i 1 regedit.exe

窗口确实出现了。碰巧我的ID是1。

答案3

我认为您可以查看当前用户的会话 ID,并将其作为 -i 参数传递,例如:

PsExec.exe -s -d **-i 2** -w c:\temp \\MyServer MyConsoleApp.exe

要查看正确的会话 ID,您可以打开 cmd 并运行命令:查询会话有时您要为其启动进程的活动用户的会话 ID 为 2,因此请尝试查找正确的会话 ID 并将其与 -i 参数一起使用。它应该有效。它对我有用。

答案4

要查找用户的会话 ID,请在特定计算机上打开任务管理器,然后在“用户”选项卡上查找您登录的用户名。

相关内容