没有RDP时自动发送密钥失败

时间:2013-04-19 10:42:30

标签: vmware remote-desktop sendkeys

我有一台我希望运行自动化任务的虚拟机(即自动化任务在实际虚拟机上运行)。

VM是Windows 2008服务器。

我已将任务添加到任务计划程序中,当我通过RDP登录计算机时,我可以通过右键单击“运行”来运行任务。

但是,当我的RDP会话关闭时,(但VM上的用户仍然登录)该任务会运行,但只打开notepad.exe,但不会写入文本。

vbs脚本如下(我们在这里使用简化了......);

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Notepad.exe"
Do Until Success = True
Success = objShell.AppActivate("Notepad")
Wscript.Sleep 1000
Loop
objShell.SendKeys "This is a test."

我已经完成了在Windows XP计算机上完成此任务的工作,而我无法理解造成问题的原因。

如果没有通过RDP连接,VM上似乎没有找到键盘。当通过RDP连接时,MSTSC将VM发送给我的键盘,然后可以正确运行任务。

谢谢,

大卫

1 个答案:

答案 0 :(得分:4)

好的,

所以我想我想出来了......

问题是,一旦您使用远程桌面注销,服务器就会被锁定,并且无法运行任何脚本。我尝试了各种选项,包括ControlSend和ControlClick命令,但没有任何成功。

解决方案如下: 使用以下命令创建批处理文件,并将其保存到要保持解锁的工作站的桌面: 我将文件命名为Logoff.bat

START C:\Windows\System32\tscon.exe 0 /dest:console
START C:\Windows\System32\tscon.exe 1 /dest:console
START C:\Windows\System32\tscon.exe 2 /dest:console
START C:\Windows\System32\tscon.exe 2 /dest:console
START C:\Windows\System32\tscon.exe 3 /dest:console
START C:\Windows\System32\tscon.exe 4 /dest:console
START C:\Windows\System32\tscon.exe 5 /dest:console

Tscon.exe是Windows安装的标准配置,专门用于保持以前锁定的控制台解锁。 请看这个链接:http://support.microsoft.com/kb/302801

下次使用远程桌面登录工作站时,请不要以正常方式注销,而是运行批处理文件 - 在我的情况下“Logoff.bat” 这将终止您的远程桌面连接并将您注销,但将继续处于解锁状态,以便运行任何脚本,就像有人实际登录一样。