我遇到问题,qwinsta只在使用PsExec执行时返回标题。
最小的测试用例是创建一个文件“shelltest.ps1”,只包含一个命令(qwista的最后一个参数是用户名,但没有它我会遇到同样的问题)
PSExec \\***.***.***.*** -u **** -p **** -accepteula qwinsta ****
当我使用文件作为输入执行此操作时,我得到了正确的行为
C:\>powershell.exe -Command .\shelltest.ps1
PsExec v2.0 - Execute processes remotely
Copyright (C) 2001-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
SESSIONNAME USERNAME ID STATE TYPE DEVICE
rdp-tcp#0 **** 2 Active rdpwd
qwinsta exited on ***.***.***.*** with error code 0.
但是当我输入命令时,我突然只得到标题
C:\>powershell.exe -Command - < shelltest.ps1
PsExec v2.0 - Execute processes remotely
Copyright (C) 2001-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
SESSIONNAME USERNAME ID STATE TYPE DEVICE
qwinsta exited on ***.***.***.*** with error code 0.
真正的问题有点复杂,但解释为什么会发生这种情况有望足以解决它。