21 грудня 2009 р.

Как сбросить сессию на терминальном сервере из командной строки

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

Немного погуглив, нарыл следующую последовательность действий:

1) Запрашиваем все доступные на терминальном сервере сессии следующей командой
Query Sessions /server:Server_Name
2) Записывем ID сессии нужного вам пользователя
3) Запускаем следующую команду для отключения выбранного пользователя
Logoff ID_Number /Server:Server_Name

Проверил этот способ - работает. Но, это все таки надо делать вручную.

Еще немного погуглив, нашел более подходящий вариант:

Проверенно - РАБОТАЕТ

 1) Создаем примитивный bat-файл user_logoff.bat со следующим содержимым
logoff rdp-tcp < yes.txt
2) В этой же папке создаем текстовый файл yes.txt с единственным содержимым - символ Y
3) Создаем новое расписание в Scheduled Tasks или nnCron для запуска файла user_logoff.bat в нужное нам время.

P.S. Маленький нюанс - рубятся все RDP сессии кроме нулевой.

2 коментарі:

  1. Этот приём сбрасывает только активные сессии. А ведь пользователи ещё умеют отключать сеансы. Как автоматизировать сброс отключенных сеансов?

    ВідповістиВидалити
  2. "Query Session" у меня работает, без S на конце

    ВідповістиВидалити