Автоматическое завершение сеансов подключенных пользователей к терминальному серверу Windows Server 2008 R2
Сегодня я расскажу как я решал одну интересную задачу. Задача состояла в том чтобы а автоматическом режиме завершать сеансы всех подключенных пользователей к терминальному серверу (он у нас на базе Windows Server 2008 R2), кроме определенного пользователя и в конце запустить bat файл. Т.е. как на скрине ниже, список всех подключенных пользователей к терминальнику и нужно всех культурно выбить кроме например пользователя с ID 10 и выполнить некий скрипт.
Средством достижения поставленной задачи был выбран путь написание своей небольшой утилиты, которая будет все это делать. Средством разработки утилиты был выбран любимый мной 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). Тихий режим нужен если вы планируете запускать ее с помощью планировщика.
Скачать утилиту
Понравилась или оказалась полезной статья, поблагодари автора
напишите статью для универсальных целей с открытым кодом
Лучше код покажи, может что и доделали бы для себя, а так — просто готовая игрушка. Чуть другая задача и все…
Исходник выкладывать не буду, так эта игрушка так называемая и создавалась под конкретную задачу собственно.