无法从 psexec 将 sessionID 0 连接到 sessionname console .bat

Could not connect sessionID 0 to sessionname console .bat from psexec

我正在尝试强制 VM 注销当前用户并通过 运行ning .bat 脚本将会话发送到控制台。

如果我在 VM 上手动 运行 一个包含以下内容的 .bat 文件,我可以使它正常工作:

%windir%\System32\tscon.exe 0 /dest:console

但是,当使用 psexec 或 paexec 调用相同的 .bat:

c:\>psexec.exe \virtualmachine -u domain\username -p password -h cmd /c
c:\user\atest\desktop\test.bat

我的访问被拒绝:

Could not connect sessionID 0 to session name console, Error code 5 Error [5]:Access is denied. C:\windows\system32\tscon.exe exited on virtualmachine with error code 1.

或者,我试过(结果相同):

C:\>PsExec.exe \virtualmachine -u domain\username -p password -h
C:\windows\system32\tscon.exe 0 /dest:console

我不确定哪里出错了,因为这开始 iexplore.exe 很好:

C:\>PsExec.exe \virtualmachine -u domain\username -p password -h "c:\program files\internet explorer\iexplore.exe"

问题是因为用户是通过 RDP 连接的,它不是会话 0。我不得不 运行 "query user" 获取 RDP 连接的会话 ID,然后将其传递到 PsExec像这样使用“-i”:

C:\>PsExec.exe -s -i $id \virtualmachine c:\windows\system32\tscon.exe $id /dest:console

因为这是 运行宁作为系统 (-s) 我不需要通过任何身份验证。

回答帮助我了解了会话的概念,希望对其他人有所帮助。

我有一个批处理文件可以工作多年,它可以结束 RDP 会话并使主机屏幕保持解锁状态,它具有 sessionid 0 到 10 的条件,以防万一。然后这周在加载 windows 更新后它停止工作,我在批处理文件的结果中不断收到 7045 错误。 RDP 会话将关闭,但主机屏幕已锁定。主机 运行 是一个留言板,所以这是不可接受的,并且机器安装在天花板上,因此无法使用鼠标或键盘。

我搜索了很多,但没有发现任何东西都可以工作超过一次,如果它真的有效的话。然后我偶然发现了这个,当我 运行 这个 power shell 命令时,我的问题就解决了。到目前为止,它工作得很好而且更好,但您不必知道会话 ID 或名称,也不必在文本或批处理文件中传递密码。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$sessionid=((quser $env:USERNAME | select -Skip 1) -split '\s+')[2] ; tscon $sessionid /dest:console" 2> UnlockErrors.log

只需将脚本复制到一个文本文件中,将其重命名为 something.cmd 然后在主机桌面上为其创建一个快捷方式并转到属性和 select 高级并将其设置为 运行 作为管理员。简单。适用于 win7 专业版。我在这里 https://steamcommunity.com/groups/homestream/discussions/0/617335934139051123/?ctp=5

找到了脚本

我用下面的命令也遇到了同样的问题 命令 – tscon SessionID /dest:console /password: ****

解决:我折腾了很久,终于知道是密码的问题了。即密码长度不应超过 13 个字符。但在这种情况下,密码 = 20 个字符。

后来我把密码改成了****(12个字符),问题就解决了。