История страницы
Когда необходим перевод машины в консольный режим
Есть несколько типов задач, которые программные роботы могут выполнить только при наличии активной графической сессии (т.е. не в фоновом режиме):
- Создание скриншота экрана
- Выполнение действий из группы «Имитация устройств»
- Выполнение некоторых действий их группы «Машинное зрение»: «Ждать исчезновения», «Ждать появления», «Существует на экране»
- Выполнение действий из подгруппы «Работа с win-элементами»
Если роботов запускают на машинах исполнения удаленно через приложение ROBIN Management Console (RMC), то проблем с выполнением таких задач не возникнет, т.к. там будет поднята графическая RDP-сессия. Однако если по каким-либо причинам запуск роботов планируется осуществлять вне RMC (вручную или по локальному расписанию) на удаленной машине, а окно с RDP-соединением пользователь не планирует оставлять в открытом виде, необходимо перевести текущую RDP-сессию в режиме console (консольный режим).
В консольном режиме графическая сессия остается активной, но при этом RDP-соединение закрыто и не мешает пользователю.
Способы перевода машины в консольный режим
Вручную
1. Запустить робота на удаленной машине. Если запуск предполагается производить по расписанию, настроенному на этой машине, то этот шаг можно пропустить.
2. Открыть cmd и выполнить команду query session. Необходим номер сессии (ID) у текущего пользователя:
Этот номер меняется при каждом новом подключении к машине, поэтому запоминать его для постоянного использования не имеет смысла.
3. Выполнить команду tscon.exe <ID> /dest:console
4. Результат: открытая сессия переведется в консольный режим, подключение к удаленному столу закрывается, а робот остается работать или будет запущен по расписанию в нужное время.
При помощи робота
Выполнять самостоятельно все команды, которые описаны в первом способе, необязательно. Их точно также может выполнить и сам робот. Просто необходимо добавить в начало целевого алгоритма действия по исполнению этих команд через cmd.
Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.
При помощи bat-файла
Чтобы каждый раз не открывать cmd и не вводить команды вручную, можно просто запускать заранее созданный bat-файл, в котором уже указаны необходимые команды. Запуск файл стоит производить также от имени администратора и только после выполнения шага №1 из первого способа.
ID сессии менять в файле не надо, его определение происходит автоматически.
Этот же bat-файл может запускать и сам робот, при помощи действия «Исполнить скрипт» (пример заполнения действия в схеме, приложенной выше). Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.
Обратите внимание!
В некоторых случаях, при переключении сессии может возникать ошибка "Не удалось подключить сеанс ID 1 к сеансу с именем console, код ошибки "1356". Ошибка: [1326]:Неверное имя пользователя и пароль.
Ошибка возникает, в следствии, ошибки 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
Ограничения при использовании консольного режима
При запуске и работе роботов в консольном режиме нужно учитывать также несколько особенностей:
- Чаще всего исполнение команды по переводу машины в консольный режим должно происходить от имени администратора (в редких случаях необходимая учетная запись уже может обладать необходимым уровнем прав).
- В политиках удаленной машины должна быть отключена автоматическая блокировка экрана и переход в спящий режим при бездействии. Это требование должно быть выполнено, если время бездействия робота (например, между его запусками по расписанию) превышает установленный лимит бездействия, после которого учетная запись блокируется или переводится в спящий режим. Дело в том, что при заблокированной учетной записи, робот сможет запуститься, но корректно исполнит только те действия, которые выполняются в фоновом режиме. Самостоятельно же разблокировать учетную запись робот не сможет.
- Необходимо, чтобы в консольном режиме разрешение экрана оставалось таким же, какое оно было при активной RDP-сессии, когда аналитик производил создание исходника робота (не влияет только при исполнении действия по созданию скриншота). Это правило должно всегда соблюдаться. Если разрешение при переходе в консольный режим все же меняется, можно попробовать немного модифицировать команду:
tscon.exe <ID> /dest:console & <Путь до QRes.exe> /x:<Значение по X> /y:<Значение по Y>
где первая команда - это переход в консольную сессию, вторая - установка разрешения при помощи специализированной утилиты. Исходники утилиты здесь.
Но здесь следует учитывать, что на некоторых виртуальных средах после отключения RDP-соединения может не сохранятся то разрешение, с которым работал пользователь. В консольном режиме может происходить автоматическая установка того разрешения, с каким в последний раз заходили администраторы в консоль управления виртуальной средой.
Такая проблема, например, существует в виртуальных средах VMware. Предлагаемое решение описано по ссылке: VM Console Display Resolution Change - vGemba.net.
То есть необходимо:
а) войти на необходимую машину через консоль управления и поменять на машине разрешение на необходимое:
б) затем прописать в настройках виртуальной машины (через консоль управления) следующие параметры:
guestInfo.svga.wddm.modeset=”FALSE”
guestInfo.svga.wddm.modesetCCD=”FALSE”
guestInfo.svga.wddm.modesetLegacySingle=”FALSE”
guestInfo.svga.wddm.modesetLegacyMulti=”FALSE”
В таком режиме манипуляции с размером консоли VMware не влияют на разрешение, которое будет на машине в консольном режиме при работе робота.