Добрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Вчера я вас научил определять номер и ID сеанса пользователя на RDS ферме или терминальном сервере. Там я вам рассказывал, что это нужно в случаях, когда вам необходимо завершить сессию пользователя, по ряду причин, одна из таких, это просто ее зависание. После чего человек и подключиться не может заново и не может выйти из своего сеанса. Вы как администратор, должны уметь решать проблему с зависшими RDP сессиями, ниже я покажу свои методы и алгоритмы.
Описание проблемы
Существует несколько методов позволяющие выкинуть пользователя с сервера.
- Завершить сессию пользователя (Сделать log off) вы можете из оснастки управления RDS фермой
- Выход пользователя можно выполнить из утилиты командной строки rwinsta
- Утилита командной строки log off
- Утилита reset session
- * Командлет Stop-TSSession
Как выкинуть пользователя из оснастки управления RDS

Щелкаем по нему правым кликом. В контекстном меню будет пункт “Выйти”, это и соответствует завершению сессии (Log off). Так же есть пункт “Отключиться”, если выберите его, то пользователь будет выброшен с терминального сервера, но его сессия останется на нем, данная операция равносильна тому, если пользователь просто нажал в окне с названием терминального сервера крестик.

После того, как вы выбрали пункт “Выйти”, начнется корректное завершение сессии пользователя на RDS ферме. Сам пользователь увидит сообщение “Работает служба профилей пользователей” и у него закроется окно без ошибки.
Второй метод разлогинить пользователя на терминальном сервере

Находим нужного нам пользователя и щелкаем по нему правым кликом, в контекстном меню. нас будет интересовать пункт “Выйти”. Выбираем его и завершаем сессию пользователя.

Бывает так, что первые два метода не помогают в случаях, когда пользовательская сессия зависает на терминальном сервере, вы вроде бы из графического интерфейса делаете выход, но оно не отрабатывает. В таких случаях нужно использовать утилиты командной строки или PowerShell
Использование утилиты RWINSTA
Если вы попали в ситуацию, когда графические методы не позволяют вам произвести выход пользователя из системы, а это необходимо, то вам на помощь придут утилиты из командной строки. RWINSTA – это встроенная в Windows утилита, которая позволяет сбрасывать сессии, по ID и имени сеанса. Первым делом вам нужно вычислить или ID сессии или ее имя, я вам рассказывал, о всех известных мне методах. можете ознакомиться. Я выберу утилиту qwinsta. Пишем команду:
В моем примере имя сеанса rdp-tcp#172 и ее ID 515. Пишем команду:
rwinsta rdp-tcp#172 /server:localhost или rwinsta 515 /server:localhost

Как отключить пользователя через reset session
Завершить сессию пользователя можно и с помощью утилиты командной строки Reset Session. В текущем примере у моего Барбоскина Геннадия Викторовича имя сеанса rdp-tcp#16 с его ID 11. Данную утилиту можно применять как локально на самом терминальном сервере, так и на своей рабочей станции, тут так же есть ключ /server.
reset session rdp-tcp#16 или reset session 11

Как отключить пользователя через logoff
logoff rdp-tcp#43 /server:localhost (Имя сервера можно менять) или logoff 54 /server:localhost

Выход пользователя через командлет Stop-TSSession
Есть такой замечательный командлет Stop-TSSession. Посмотрим на сервере ID и имя сеанса, для этого в открытой оболочке PowerShell введите:
В итоге я вижу, что у пользователя barboskin.g SessionID 3. Далее пишем
Stop-TSSession 3 или принудительно Stop-TSSession 3 -Force

Выход пользователя через командлет Stop-TerminalSession
Данный командлет устанавливается отдельно, совместно с пакетом Pscx. Первым делом посмотрим локально или удаленно идентификаторы сессии пользователя, для которого мы хотим сделать log off. Выполняем команду:
Get-TerminalSession -ComputerName имя сервера

Нужный мне ID сеанса 427. Далее воспользуемся командлетом Stop-TerminalSession, чтобы выкинуть пользователя и завершить его сессию.
Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force

Как видите сессия 427 больше не существует, и у нас с помощью командлета Stop-TerminalSession получилось выкинуть пользователя из RDS сеанса. На этом у меня все. Остались вопросы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Query the Remote Server for Current Terminal Sessions
SET PATH = %PATH%;C:WindowsSystem32DLLCache;
QWinsta
QWinsta is little different and better. It has more features and options. It comes with all flavors of Windows. QWinsta command line help displays as,
You are welcome to try the other options QWinsta provides.
Logoff command kicks off (logging off) the specified remote session. Log off help shows,
RWinsta has same parameters and does same thing as log off command. It simply means Reset WINdows STAtion. The help goes as,
sessionname Identifies the session with name sessionname. sessionid Identifies the session with ID sessionid. /SERVER:servername The server containing the session (default is current). /V Display additional information.
Note: RWinsta command does not return anything.
Happy Re-setting the remote sessions (Hey, stop cursing your co-workers who didn’t log off their sessions).
Keywords: Reset remote session, Remote Desktop Session
Для ОС Win2k8 и выше, необходимо пропускать 2-е подстроки в строке (skip=2) что бы не обрабатывать учетные записи служб. Например «services».
Но это все справедливо для пользователей, которые на данный момент активны в терминальной сессии, т.е есть параметры – Имя сеанса, – Пользователь, -ID сеанса.
Когда пользователь disconnected
эти скрипты не отрабатывают.
Как я понял, данный скрипт производит сброс протоколов rdp-tcp и ica-tcp.
Но обязательно данные действия надо подтверждать.
Это не возможно, если автоматизировать данный скрипт через планировщик задач.
Модифицировать данный скрипт без подтверждения действий у меня не получилось. Жду советов и помощи в модификации скрипта.
logoff всех терминальных пользователей.
Да, так и вправду лучше 🙂
Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра.
А совсем в идеале хотелось брать из вывода комманды
Поэтому изменил, что логофить из колонки №2.
Т.е. получается, что он логофит либо по имени сеанса (если юзер активен), либо по ID (если юзер отключен).
Как правильно завершить сеанс на удаленном рабочем столе?
Для правильной работы сервера, экономии оперативной памяти, выделенной вашему виртуальному серверу, важно правильно завершать сеансы пользователей на удаленном рабочем столе.
В случае, если не правильно завершать сеансы RDP, то отключенные но не закрытые сеансы удаленных рабочих столов пользователей накапливаются на сервере и забивают всю память и сервер начинает тормозить, затрудняя работу других пользователей.
Как нельзя завершать сеанс?
В случае, если пользователь просто закрывает сеанс крестиком наверху экрана, все открытые программы, сам сеанс пользователя удаленного рабочего стола, остаются открытыми. Соответствено сеанс и программы, 1С и прочие, продолжают занимать память и мощность сервера.
Завершение сеанса RDP на Server 2016
Для завершения сеанса на терминальном сервере работающем под управлением Windows Server 2016 выполните следующие действия:
Откройте стандартное меню ПУСК, и в левой части экрана выберите НЕ кнопку ВКЛВЫКЛ, а чуть выше значок с иконкой пользователя.
После этого правильным способом завершить сеанс, будет нажатие на пункт меню “ВЫХОД”.
Пункт “Заблокировать”, будет равносилен неправильному завершению сеанса, т.к. на рабочем столе остануться открытыми все программы и документы.
Перед выходом с сервера убедитесь, что вы сохранили все документы и правильно закрылы окна программ 1С и Office.
В случае работы из под учетной записи “Администратор” и выборе нижнего пункта меню (со значокм “ВКЛ”) вы можете случайно ВЫКЛЮЧИТЬ сервер и отключить от работы всех пользователей работающих на сервере без их ведома. Будьте внимательны!
Завершение сеанса RDP на Server 2012
Для правильного завершения сеанса подключения к удаленному рабочему столу Windows 2012, на сервере арендованном в нашей компании, необходимо выполнить следующие действия:
На наших серверах установлена программа Classic Shell, поэтому меню ПУСК выглядит более привычно глазу пользователя.
Для завершение сеанса и закрытия всех программ, необходимо просто выполнить нажатие на меню ПУСК и выбрать пункт “Завершение сеанса”.
В случае работы из под Администратора необходимо соблюдать осторожность, так как данное выпадающее меню также содержит пункт “Завершение работы” с помощью которого соответственно останавливается работа всего сервера и завершаются сеансы всех пользователей.
Как правильно завершить работу сервера?
Ознакомьтесь с нашей статьей, как правильно завершать работу сервера, работающего на операционной системе Windows Server 2012 или 2016.
Посмотреть цены на сервера для 1С
Для оплаты счетов или заказа сервера, а также для обращения в техническую поддержку зайдите в свой личный кабинет.
Как удалить сеансы пользователей на терминальном сервере
При аренде сервера 1С бывают ситуации, когда на сервере есть незавершенные сеансы пользователей, которые закрыли окно подключения к серверу, не завершив правильно сеанс, а сеансы необходимо закрыть, что бы установить то или иное ПО или установить обновления и перезагрузить сервер.
Как отключить сеансы неактивных пользователей?
Увидеть сеансы пользователей, вы можете из под своей администраторской учетной записи, на сервере, вызвав “Диспетчер задач” в Windows, и перейдя в вкладку “Пользователи”,
выберите пользователя, которого желаете отсоединить от сервера, и нажмите пункт меню “Выйти”. Сеанс пользователя будет завершен с закрытием всех открытых у пользователя приложений.
Для вызова диспетчера задач, щелкните правой кнопкой мыши, на самой нижней панели Windows, включающей в себя кнопку Пуск.
При этом необходимо иметь ввиду, что пользователи помеченные в графе состояние, как “Отключено”, это как раз пользователи завершившие сеанс, просто закрыв окно подключения, не закрыв программы, приложения и документы на сервере, именно они могут потерять часть даннх, если вы не завершите их сеансы, а просто внезапно переагрузите сервер.
Необходимо отметить, что если у пользователя, были открыты приложения типа графических или текстовых редакторов, которые не поддерживают авто сохранения документов, данные все же могут быть утеряны. Однако такой способ завершения сеанса пользователя по крайней мере способствует более здоровой работе файловых баз 1С, так как завершение программы происходит корректно и база после этого не требует индексации.
Так же необходимо пояснить пользователям, что грамотным завершением сеанса в конце рабочего дня, является использование кнопки “Завершить сеанс” в меню ПУСК, операционной системы Windows, вашего терминального сервера. При таком завершении сеанса, неизбежно закрываются все программы и предлагается сохранить все данные.
Кроме того, Вам следует понимать, что не закрытые, но даже не активные сеансы пользователей, с открытыми программами и документами, занимают ресурсы вашего сервера, например оперативную память, что хорошо видно в закладке “Пользователи” Диспетчера задач. Поэтому в выгоднее не держать много сеансов открытыми без надобности.




