我有一个虚拟机,我希望在其上运行自动化任务(即自动化任务在实际虚拟机上运行)。
VM 是 Windows 2008 服务器。
我已将该任务添加到任务计划程序中,当我通过 RDP 登录到计算机时,我可以通过右键单击“运行”来运行该任务。
但是,当我的 RDP 会话关闭时(但虚拟机上的用户仍然登录)该任务尝试运行,但仅打开 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 连接时,虚拟机上似乎找不到键盘。通过 RDP 连接时,MSTSC 向虚拟机发送我的键盘,然后可以正确运行任务。
Thanks,
David
OK,
所以我想我已经弄清楚了...
问题是,一旦您使用远程桌面注销,服务器就会被锁定,并且任何脚本都无法运行。我尝试了各种选项,包括 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”
这将终止您的远程桌面连接并使您注销,但随后将继续处于解锁状态,以便任何脚本运行,就像有人实际登录一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)