通常,RPA厂商都会提供这样一种服务:提供机器自动部署并执行用户所设计好的业务流程。在具体的实现形式上,一般是在一组7x24小时运行的服务器上部署能够执行业务流程的软件,并通过某种业务层协议将业务流程调度到这些软件上执行。考虑到运维成本,这些服务器通常是虚拟机而不是真实的物理机,运维通过远程控制协议接入这些虚拟机。在RPA的应用场景中,这些虚拟机通常是Windows系统,采用的协议则通常是RDP协议。
在通过RDP协议连上服务器时,Windows系统会创建新会话并展示图形桌面。在断开RDP连接后,系统会话会继续维持,但图形桌面不再继续维持。这是可以理解的,在连接断开后并没有任何的对象会去查看桌面,继续维持桌面是对资源的浪费。然而,在RPA的应用场景中,一方面某些自动化操作的执行通常依赖于图形桌面的存在,另一方面用户也希望查看业务流程的执行过程以便排查业务流程的失败原因,Windows的上述处理则因此带来了问题。
为了维持图形桌面,通常有以下两种解决方案:
1. 持续保持RDP连接
这是最直接的方案,既然断开后不再维持桌面,那么就保持不断开。具体实现操作包括两种:
- 使用跳板机连接多台服务器,并保持RDP始终不断开。
该方案存在单点问题,一旦跳板机异常,则可能导致大量的服务器图形桌面异常。
- 在每台服务器上创建两个用户,并在第一个用户中连接到第二个用户,随后断开第一个用户的连接,从而持续保持对第二个用户的连接。
该方案相对稳定,但操作较为繁琐。
2. 通过tscon命令维持
tscon可用于从console模式接入指定的系统会话。console模式可以认为等价于物理机的接入方式,即系统会永远为console模式会话维持图形桌面。
使用方式:
tscon {<sessionID> | <sessionname>} [/dest:<sessionname>] [/password:<pw> | /password:*] [/v]
tscon的方式操作简单,每次通过RDP连接接入后,通过tscon命令断开连接即可。而tscon的缺点在于该方式下断开后分辨率会表现为某个固定值,这种分辨率下看到的桌面有时并不理想。