Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Когда необходим перевод машины в консольный режим

Есть несколько типов задач, которые программные роботы могут выполнить только при наличии активной графической сессии (т.е. не в фоновом режиме):

  • Создание создание скриншота экрана
  • Выполнение выполнение действий из группы «Имитация устройств»
  • Выполнение выполнение некоторых действий их группы «Машинное зрение»: «Ждать исчезновения», «Ждать появления», «Существует на экране»
  • Выполнение выполнение действий из подгруппы «Работа с win-элементами»

...

В консольном режиме графическая сессия остается активной, но при этом RDP-соединение закрыто и не мешает пользователю.

Способы перевода машины в консольный режим

Вручную

1. Запустить робота на удаленной машине. Если запуск предполагается производить по расписанию, настроенному на этой машине, то этот шаг можно пропустить.

2. Открыть cmd и выполнить команду query session. Необходим номер сессии (ID) у текущего пользователя:

Image Removed

Этот номер меняется при каждом новом подключении к машине, поэтому запоминать его для постоянного использования не имеет смысла.

 3. Выполнить команду tscon.exe <ID> /dest:console

Image Removed

4. Результат: открытая сессия переведется в консольный режим, подключение к удаленному столу закрывается, а робот остается работать или будет запущен по расписанию в нужное время.

Подробнее: https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/keeping-computer-unlocked.html  

При помощи робота

Выполнять самостоятельно все команды, которые описаны в первом способе, необязательно. Их точно также может выполнить и сам робот. Просто необходимо добавить в начало целевого алгоритма действия по исполнению этих команд через cmd.

Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.

Image RemovedКонсольный режим.robin-source

При помощи bat-файла 

Чтобы каждый раз не открывать cmd и не вводить команды вручную, можно просто запускать заранее созданный bat-файл, в котором уже указаны необходимые команды. Запуск файл стоит производить также от имени администратора и только после выполнения шага №1 из первого способа.

ID сессии менять в файле не надо, его определение происходит автоматически.

Этот же bat-файл может запускать и сам робот, при помощи действия «Исполнить скрипт» (пример заполнения действия в схеме, приложенной выше). Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.

Image RemovedRDP.bat

Обратите внимание!

В некоторых случаях, при переключении сессии может возникать ошибка "Не удалось подключить сеанс ID 1 к сеансу с именем console, код ошибки "1356". Ошибка: [1326]:Неверное имя пользователя и пароль.

Image Removed

Ошибка возникает, в следствии, ошибки Windows. Описание ошибки и способы решения описаны тут: https://support.microsoft.com/ru-ru/topic/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BF%D1%80%D0%B8-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F-%D1%83%D1%87%D0%B5%D1%82%D0%BD%D0%BE%D0%B9-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B2-windows-1326-a238729e-4b79-b9e2-ebfa-2967c91ef5bf

Ограничения при использовании консольного режима

При запуске и работе роботов в консольном режиме нужно учитывать также несколько особенностей:

  1. Чаще всего исполнение команды по переводу машины в консольный режим должно происходить от имени администратора (в редких случаях необходимая учетная запись уже может обладать необходимым уровнем прав).
  2. В политиках удаленной машины должна быть отключена автоматическая блокировка экрана и переход в спящий режим при бездействии. Это требование должно быть выполнено, если время бездействия робота (например, между его запусками по расписанию) превышает установленный лимит бездействия, после которого учетная запись блокируется или переводится в спящий режим. Дело в том, что при заблокированной учетной записи, робот сможет запуститься, но корректно исполнит только те действия, которые выполняются в фоновом режиме. Самостоятельно же разблокировать учетную запись робот не сможет.
  3. Необходимо, чтобы в консольном режиме разрешение экрана оставалось таким же, какое оно было при активной RDP-сессии, когда аналитик производил создание исходника робота (не влияет только при исполнении действия по созданию скриншота). Это правило должно всегда соблюдаться. Если разрешение при переходе в консольный режим все же меняется, можно попробовать немного модифицировать команду:

tscon.exe <ID> /dest:console & <Путь до QRes.exe> /x:<Значение по X> /y:<Значение по Y>

где первая команда - это переход в консольную сессию, вторая - установка разрешения при помощи специализированной утилиты. Исходники утилиты здесь.

Но здесь следует учитывать, что на некоторых виртуальных средах после отключения RDP-соединения может не сохранятся то разрешение, с которым работал пользователь. В консольном режиме может происходить автоматическая установка того разрешения, с каким в последний раз заходили администраторы в консоль управления виртуальной средой.

Такая проблема, например, существует в виртуальных средах VMware. Предлагаемое решение описано по ссылке: VM Console Display Resolution Change - vGemba.net.

То есть необходимо:

а)     войти на необходимую машину через консоль управления и поменять на машине разрешение на необходимое:

Image Removed

б)     затем прописать в настройках виртуальной машины (через консоль управления) следующие параметры: 

guestInfo.svga.wddm.modeset=”FALSE”

guestInfo.svga.wddm.modesetCCD=”FALSE”

guestInfo.svga.wddm.modesetLegacySingle=”FALSE”

guestInfo.svga.wddm.modesetLegacyMulti=”FALSE”

Image Removed

Отображение дочерних элементов
В таком режиме манипуляции с размером консоли VMware не влияют на разрешение, которое будет на машине в консольном режиме при работе робота.