自动化脚本远程执行(虚拟机)

发布于:2023-01-04 ⋅ 阅读:(323) ⋅ 点赞:(0)

参考文档:https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/in-minimized-window.html

​ https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/keeping-computer-unlocked.html

远程执行指南

自动化流程会占用鼠标及键盘的使用,这完全阻止了本地机器的正常使用。为了避免这个问题我们可以选择远程启动空闲的机器执行。但是在远程机器上启动程序是一个挑战。

Windows远程桌面功能

远程桌面(RDP)为具有Windows操作系统的远程计算机提供虚拟活动桌面。有2个潜在问题:

​ 如果RDP窗口最小化,默认情况下远程PC上没有活动桌面。

​ 如果RDP断开连接,桌面将被锁定。

在这两种情况下,任何GUI自动化作业都会失败

处理Windows远程桌面启动的问题

问题一:在最小化的远程桌面窗口中运行

更改本地计算机注册表设置

  1. 本地计算机上,关闭所有打开的远程桌面会话。

  2. 启动注册表编辑器(regedit.exe)

  3. 导航到以下注册表项之一,具体取决于您时希望为当前用户还是为计算机上所有的用户修改远程桌面设置:

    HKEY_CURRENT_USER\Software\Microsoft\终端服务器客户端

    HKEY_LOCAL_MACHINE\Software\Microsoft\终端服务器客户端

​ 注意:存在使用HKEY_CURRENT_USER键覆盖HKEY_LOCAL_MACHINE键的安全设置和组策略。在这种情况下,请修改HKEY_CURRENT_USER注册表项中的远程桌面设置。

  1. 创建一个名为:RemoteDesktop_SuppressWhenMinimized的DWORD值并将其设置为2(十六进制或十进制):
    请添加图片描述

  2. 在 64 位版本的 Windows 上,您可能需要对以下键之一**重复上一步。**同样,选择哪个键取决于您是要仅为当前用户还是为所有用户编辑设置:

    HKEY_CURRENT_USER\Software\Wow6432\Microsoft\Terminal 服务器客户端

    HKEY_LOCAL_MACHINE\Software\Wow6432\Microsoft\终端服务器客户端

  3. 关闭注册表。

现在,当您最小化计算机上的远程桌面连接窗口时,这不会影响远程计算机的 GUI,并且 GUI 将可用于您的自动化(RemoteDesktop_SuppressWhenMinimized注册表值会导致 Microsoft Lync出现问题。例如,Lync 可能无法共享屏幕)。

问题二:运行自动化时断开远程桌面的连接

方法一:tscon

  1. 使用远程桌面连接到远程计算机时,关闭远程桌面会锁定计算机并显示登录屏幕。在锁定模式下会丢失界面,因此任何当前运行或计划的自动化程序都将失败。
  2. 为了避免自动化出现问题,请使用tscon使用程序断开与远程桌面的连接。tscon将控制权返回到远程计算机上的原始本地会话,绕过登录屏幕。远程计算机上的所有程序继续正常运行,包括自动化程序。

注意:tscon使远程计算机保持解锁状态,这会降低系统安全性。自动化结束后,您可以使用一下命令锁定计算机。

import os

os.popen(Rundll32.exe user32.dll, LockWorkStation)  # windows锁屏

方法二:手动断开

​ 要从远程桌面断开连接,请以管理员身份在远程计算机上(在远程桌面连接窗口中)运行一下命令,例如,通过命令行:

%windir%\System32\tscon.exe RDP-Tcp# NNN /dest:console

​ 其中RDP-Tcp# NNN 是当前远程桌面会话的 ID,例如RDP-Tcp#5。您可以在Windows 任务管理器的“用户”选项卡上的“**会话”**列中看到它。

会话列默认隐藏。要显示它,请右键单击显示CPU、内存等的行中的某处,然后再打开的上下文菜单中选择会话

请添加图片描述

您将看到您的远程桌面服务会话已结束消息,并且远程桌面客户端将关闭。但远程计算机上的所有程序和自动化将继续正常运行。

方法三:通过批处理文件断开连接

可以通过批处理文件自动执行断开过程。

  1. 使用一下代码创建一个批处理文件:

    for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
      %windir%\System32\tscon.exe %%s /dest:console
    )
    
  2. 创建此文件的桌面快捷方式。为此,请邮件单击批处理文件并选择发送到 > 桌面(创建快捷方式)

  3. 在快捷方式属性中,单机高级并选择以管理员身份运行

  4. 创建此文件的桌面快捷方式。为此,请邮件单击批处理文件并选择发送到 > 桌面(创建快捷方式)

  5. 在快捷方式属性中,单机高级并选择以管理员身份运行

  6. 在远程计算机上上级此快捷方式(在远程桌面连接窗口中)或在测试开始时调用此批处理文件(前提是程序以管理员身份运行)。


网站公告

今日签到

点亮在社区的每一天
去签到