5

我有一个希望在其上运行自动化任务的 VM(即自动化任务在实际 VM 上运行)。

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 发送我的键盘,然后可以正确运行任务。

谢谢,

大卫

4

1 回答 1

6

好的,

所以我想我想通了...

问题是,一旦您使用远程桌面注销,服务器就会被锁定,并且无法运行任何脚本。我尝试了各种选项,包括 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” 这将终止您的远程桌面连接并将您注销,但随后会继续以解锁状态运行任何脚本,就好像有人实际登录一样。

于 2013-04-22T15:11:20.527 回答