Завершение отключенных сеансов на терминальном сервере

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

И если системный администратор (ленивая жопа) вовремя не настроил при помощи групповых политик таймауты отключения завершенных сеансов, как описано, например, здесь — ссылка, то можно настроить данный процесс при помощи небольшого bat скрипта, который нужно будет запускать планировщиков примерно 1 раз в пару часов.

Листинг скрипта

Открываем любой нормальный текстовый редактор (хотя бы Notepad++), вставляем в него такой код и сохраняем с расширением *.bat, например logoff_users.bat:

query session > C:/logoff.txt
FIND /V "rdp-tcp#" C:/logoff.txt > C:/logoff2.txt
for /F "skip=2 tokens=2," %%i in (C:/logoff2.txt) DO (IF NOT %%i==0  (IF NOT %%i==65536 logoff %%i) )

Как может заметить любопытный читатель — в скрипте всего три строки кода, что делает его почти идеальным. Давайте разберемся, что же происходит.

1). Сначала сохраняем список сессий пользователей не терминальном сервере в текстовый файл C:/logoff.txt

Видим, что у отключенного пользователя в колонке СЕАНС отсутствует rdp-tcp#… — по этому признаку и будем отбирать отключенных пользователей.

2). Переписываем текстовый файл C:/logoff.txt в другой текстовый файл C:/logoff2.txt но без строк, в которых встречается «rdp-tcp#», теперь в тектовом файле остался только отключенный пользователь и две строки служебных подключений, которые мы трогать не будем:

3). В третьей строке скрипта осуществляется перебор строк файла C:/logoff2.txt колонки ID (айди сеанса), и если айди сеанса не равно 0 или 65536 — осуществляем выход пользователя командой logoff, передав ей в качестве параметра айди сеанса.

Планировщик

Теперь осталось в планировщике Windows создать задачу, которая время от времени будет запускать данный скрипт и «очищать сервер» от зависших сессий.

Не забудьте поставить галочку «запускать с наивысшими правами» и «вне зависимости от регистрации пользователя»

Более правильные методы завершения отключенных сеансов

На самом деле более правильным решением будет все же настроить таймауты сессий в настройках RDS или при помощи локальных групповых политик.

Описанное выше решение скорее подойдет в таких случаях, когда вы не хотите ограничивать клиентов в ресурсах по ночам (в непродуктивное время), но хотите, чтобы днем, при полной загрузке RDP сервера, все свободные ресурсы были предоставлены активным пользователям.

Ну или вы хотите нажатием одной кнопки «очищать» сервер от нерадивых отключенных пользователей.

Related Posts

Автоматическое сохранение фото тревожных событий с камер наблюдения

Автоматическое сохранение фото тревожных событий с камер наблюдения

Перенос сайта на другой хостинг — NS серверы

Перенос сайта на другой хостинг — NS серверы

У вас WordPress — значит вас постоянно пытаются взломать

У вас WordPress — значит вас постоянно пытаются взломать

Расширение квоты хранилища правил Outlook

Расширение квоты хранилища правил Outlook

Тут еще никто не писал

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *