【发布时间】:2015-02-04 08:38:23
【问题描述】:
在驻留在远程桌面的批处理文件中,我只写了“python jwRelay.py”
我想使用 psexec 使用以下命令运行批处理文件:
psexec -s -i 2 \\135.20.230.160 -u administrator -p force cmd.exe /c "C:\Users\Administrator\Desktop\jwRelayCDV16\SampleCode\Python\relay.bat"
问题是当我运行上述命令时,远程机器中的命令提示符快速弹出并关闭(我可以通过 mstsc 看到)。如果我想远程调试代码,如何保持命令提示符打开?
在我的笔记本电脑上运行上述命令后,我得到了这个:
PsExec v2.11 - 远程执行进程
版权所有 (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.comcmd.exe 在 135.24.237.167 上退出,错误代码为 2。
除了在远程机器上以交互模式运行脚本 jwRelay.py 之外,还有其他选择吗?
【问题讨论】:
-
如果您希望 cmd shell 保持打开状态,请使用“/k”而不是“/c”,例如
psexec -s -i 2 \\135.20.230.160 cmd.exe /k python path\to\jwRelay.py。如果您还希望 Python 在交互式 shell 中保持打开状态,请使用python -i path\to\jwRelay.py。此外,考虑到“-s”使其以SYSTEM运行,“-u”选项将被忽略。 -
感谢 eryksun,我使用了 /k 并且有效。在另一个线程中,我问为什么我必须将 -i 1 更改为 -i 2 因为 psexec 突然停止使用 -i 1 选项。但是在论坛里没有得到任何答复。如果你能解释它会很有帮助。
-
为了处理并发用户,Windows 子系统 (win32k.sys) 的内核组件被映射到会话地址空间,以及命名内核对象的命名空间(例如 ALPC 端口、WindowStation、Event、Mutant、 Section) 部分本地化到
\Sessions对象目录(检查accesschk -qso \Sessions)。在 Vista (NT 6) 之前,控制台与系统服务共享会话 0,但 NT 6 将会话 0 与系统服务隔离开来。 “-i”选项应该默认为控制台会话。尝试psexec \\135.20.230.160 -s cmd.exe打开一个 shell 来检查可用的会话。 -
谢谢 eryksun,我会检查的
标签: python windows python-2.7 python-3.x psexec