SCROLL
Среднее время на прочтение: 1 мин.

Автоматическое завершение сеансов подключенных пользователей к терминальному серверу Windows Server 2008 R2

Сегодня я расскажу как я решал одну интересную задачу. Задача состояла в том чтобы а автоматическом режиме завершать сеансы всех подключенных пользователей к терминальному серверу (он у нас на базе Windows Server 2008 R2), кроме определенного пользователя и в конце запустить bat файл. Т.е. как на скрине ниже, список всех подключенных пользователей к терминальнику и нужно всех культурно выбить кроме например пользователя с ID 10 и выполнить некий скрипт.

Выделение_366

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

В итоге вот что получилось. Принцип работы утилиты:

  • Определяются все активные на данный момент сеансы пользователей (Консольные и RDP-ные подключения)
  • Подгружается список исключаемых пользователей из файла Exclude_users.ini
  • Идет сравнение активных пользователей и исключаемых, если среди активных пользователей находится исключаемый то он не попадает в список на завершения сеансов пользователей
  • Посылается запрос на принудительное завершение сеанса всем пользователям которые попали в список на отключение
  • Формируется отчет (\Log\(текущая дата)\Report.txt)
  • По желанию можно по окончанию завершения сеансов RDP пользователей, можно запустить скрипт bat.

Рабочее окно программы:

Основные пояснения по интерфейсу:

  • Кнопка Формировать — собственно получается список всех активных и не корректно завершенных сеансов.
  • Кнопка Завершение сеансов — Собственно выполнение завершения сеансов всех пользователей, кроме исключаемых пользователей. По окончании процесса завершения сеансов, в случае если стоит галочка (Запустить скрипт (.bat)) то выполнится указанный скрипт.

Пользователи которых нужно исключить от завершения сеанса заносятся в файл Exclude_users.ini. Указывать нужно их доменные имена и если нужно исключить несколько пользователей, то их имена нужно указывать в столбик.

Пример:

test1
test2

Пример отчета который получаем на выходе:

### Отчет за 19.06.2016 11:46:48 ###
# Активные пользователи #
Пользователь: PoSys
# Исключаемые пользователи #
PoSys
# Отключаемые пользователи #
#*#*# Все сеансы пользователей из списка на отключение завершены #*#*#
Всего завершено сеансов: 0
#*# Запуск выполнения скрипта (.bat)... #*#

 

Так же есть возможность запуска в тихом режиме. Ключ для запуска в тихом режиме (-silent). Тихий режим нужен если вы планируете запускать ее с помощью планировщика.

Скачать утилиту

 

Понравилась или оказалась полезной статья, поблагодари автора

 

Обсуждение

3 комментариев
  • напишите статью для универсальных целей с открытым кодом

  • Лучше код покажи, может что и доделали бы для себя, а так — просто готовая игрушка. Чуть другая задача и все…

    • Это ответ на комментарий Евгений

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