Несколько раз встречался с ситуацией, когда один из пользователей Windows Server с ролью RDS (Remote Desktop Services) запустил приложение, которое утекло и заняло всю доступную RAM. Удаленно подключиться к такому хосту по RDP невозможно. Чтобы завершить утекший процесс, нужно выполнить удаленный логофф пользователя. Для этого можно использовать встроенную команду logoff
.
Синтаксис команды logoff.exe:
logoff /server:<servername> <session ID> /v
Команда logoff принимает ID сессии пользователя, которую нужно завершить. Чтобы вывести список активных сеансов пользователей на удаленном компьютере, выполните команду:
quser /server:RemoteComputerName
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME admin console 1 Active none 1/25/2023 1:23 PM
В данном случае на компьютере выполнен локальный вход (console) под пользователем admin. ID этой сессии равно 1.
Можно получить ID сессии определенного пользователя:
quser /server:RemoteComputerName sidorov
Совет. Если пользователь подключен через Remote Desktop, в поле SESSIONNAME будет указано rdp-tcp#X.
Вы можете удаленно завершить сеанс пользователя по его ID сессии. Выполните команду:
logoff 1 /SERVER:RemoteComputerName /v
Logging off session ID 1
При завершении сеанса пользователя, будут завершены все его запущенные процессы.
Проверьте, что на удаленном компьютере не осталось активных сессий:
quser /server:RemoteComputerName
No User exists for *
Можно использовать небольшой скрипт, чтобы завершить все сеансы пользователей на нескольких терминальных серверах:
@echo off
setlocal
set servers=MSKRDS1 MSKRDS2
for %%s in (%servers%) do (
qwinsta /server:%%s | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:%%s %%i /v
)
Также для удаленного завершения сессий пользователей можно использовать встроенную утилиту rwinsta:
rwinsta rdp-tcp#12 /server:MSKRDS2
или
rwinsta 22 /server:MSKRDS2
Случилось так, что юзер на сервере запустил Wireshark и забыл. Через несколько дней оперативка кончилась и серверу Windows Server 2012 R2 стало плохо. Попытки зайти на сервер по RDP или консоль не увенчались успехом. Удалось удалённо подключиться к управлению компьютером и в логах узнать о проблемах с оперативкой.
Стало понятно, что нужно сделать юзеру LOGOFF, чтобы все запущенные приложения завершили свою работу.
Порядок действий
Получаем идентификатор сессии искомого юзера на нашем удалённом сервере с помощью командной строки:
quser /server:my_server_name
Результат:
C:\Windows\system32>quser /server:my_server_name
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
v.pupkin 1 Disc 21:14 15.05.2018 11:13
Нас интересует здесь значение ID=1
Делаем юзеру LOGOFF:
logoff 1 /SERVER:my_server_name /v
Результат:
C:\Windows\system32>logoff 1 /SERVER:my_server_name /v
Logging off session ID 1
C:\Windows\system32>quser /server:my_server_name
No User exists for *
Через некоторое время память освободилась, серверу похорошело.
На чтение 3 мин Опубликовано Обновлено
В Windows Server 2016 есть несколько способов завершить сеанс пользователя, и важно знать о них, чтобы эффективно управлять системой. В этой статье мы представим подробную инструкцию о том, как правильно завершать сеанс пользователя в Windows Server 2016 и поделимся полезными советами, которые помогут вам в этом процессе.
Первый способ — использование команды «Завершить». Вы можете открыть меню «Пуск» и выбрать «Завершить», либо использовать сочетание клавиш Alt+F4 на рабочем столе или активном окне. Но помните, что это завершит все открытые программы и не сохраненные данные будут потеряны.
Второй способ — использование команды «Выход». Эта команда завершает сеанс пользователя, сохраняя все открытые программы и файлы. Чтобы воспользоваться этим способом, откройте меню «Пуск», выберите «Выход» и затем «Выход без изменений» или «Выход и вход в систему».
Третий способ — использование командной строки или PowerShell. Вы можете использовать команды, такие как «shutdown», «logoff» или «quser», чтобы завершить сеанс пользователя. Например, чтобы завершить сеанс пользователя по имени «username», вы можете ввести команду «logoff username» или «quser /server:servername | findstr username | foreach {logoff $_.ID}».
Будьте осторожны при завершении сеанса пользователя, особенно если у вас есть несохраненные данные, так как все изменения будут потеряны. Поэтому рекомендуется перед завершением сеанса сохранить все открытые файлы и программы.
В заключение, правильное завершение сеанса пользователя в Windows Server 2016 является важным аспектом эффективного управления системой. Пользуйтесь представленными выше инструкциями и советами, чтобы безопасно и эффективно завершать сеанс пользователя и управлять вашим сервером.
Как правильно завершить сеанс пользователя в Windows Server 2016?
Завершение сеанса пользователя в Windows Server 2016 может быть несколько более сложным, чем на рабочей станции. Вам могут потребоваться дополнительные разрешения и доступ к серверу, чтобы выполнить это действие. Вот несколько способов, как правильно завершить сеанс пользователя в Windows Server 2016.
1. Используйте диспетчер задач. Для завершения сеанса пользователя откройте диспетчер задач, нажав клавишу Ctrl + Shift + Esc. Во вкладке «Пользователи» вы увидите список всех активных пользователей на сервере. Выберите нужного пользователя и нажмите кнопку «Завершить задачу». Это принудительно завершит сеанс пользователя и выйдет из системы.
2. Используйте командную строку. Если у вас есть административные права на сервере, вы можете использовать команду «logoff» для завершения сеанса пользователя. Откройте командную строку с правами администратора и введите «logoff » без кавычек. Замените на фактический идентификатор сеанса данного пользователя. Затем нажмите Enter, чтобы завершить сеанс пользователя.
3. Используйте удаленное управление сеансами. Если у вас есть доступ к серверу удаленной администрации сеансов, вы можете использовать эту функцию для завершения сеанса пользователя. Откройте удаленное управление сеансами и найдите нужного пользователя в списке активных сеансов. Кликните правой кнопкой мыши на пользователя и выберите «Завершить сеанс». Это принудительно завершит сеанс пользователя и выйдет из системы.
Следуя этим простым инструкциям, вы сможете правильно завершить сеанс пользователя в Windows Server 2016. Помните, что выполнение этого действия может потребовать дополнительных разрешений и доступа к серверу. Будьте осторожны при завершении сеансов пользователей, чтобы не потерять незавершенные данные или процессы.
Для завершения сессии пользователя на терминальном сервере можно использовать следующие методы:
- Через Диспетчер задач:
- Откройте Диспетчер задач, нажав сочетание клавиш Ctrl + Shift + Esc.
- Перейдите на вкладку “Пользователи”.
- Выберите пользователя, сессию которого нужно завершить.
- Нажмите на кнопку “Завершить задачу”.
- Через Управление компьютером:
- Откройте Управление компьютером, щелкнув правой кнопкой мыши на значке “Пуск” и выбрав соответствующий пункт в контекстном меню.
- Разверните ветку “Службы и приложения” и выберите “Сеансы”.
- Выберите сеанс пользователя, которого нужно завершить.
- Нажмите на кнопку “Завершить сеанс”.
- Через командную строку:
- Откройте командную строку от имени администратора.
- Введите команду “query session”, чтобы получить список активных сеансов на терминальном сервере.
- Найдите ID сеанса пользователя, которого нужно завершить.
- Введите команду “reset session <ID>”, где <ID> – это ID сеанса пользователя, которого нужно завершить.
Обратите внимание, что для завершения сессии пользователя на терминальном сервере вам может потребоваться права администратора.
Описание проблемы
В Windows Server 2012 R2 существует ферма RDS из 15 узлов подключения. Для этого нужны серверы и серверы, которые работают постоянно. Если в вашей ферме не настроены тайм-ауты времени безотказной работы, пользователи могут зависать на авторизованных соединениях на недели или месяцы. Логично предположить, что это не очень хорошо и приводит к различным последствиям, одним из которых является полная блокировка сеанса, когда человек не может подключиться к терминальному серверу и видит сообщение «Служба профилей пользователей запущена» или другое «Может не завершить запрошенную операцию », я не говорю о повреждении профиля пользователя. В результате того, что брокеры RDS видят, что пользователь уже вошел в систему, они не позволяют ему повторно подключаться к другому серверу узла сеанса, даже если вы закрываете новые подключения на текущем. Пока вы не выйдете из системы для этого сеанса, он все равно будет мешать. Давайте узнаем, как это сделать.
Методы завершения сессии пользователя не терминале
Есть несколько способов удалить пользователя с сервера.
- вы можете завершить сеанс пользователя (выйти из системы) из оснастки управления фермой RDS
- Вы также можете выйти из системы с самого терминального сервера из диспетчера задач
- Пользователь может выйти из программы командной строки rwinsta
- Отключите утилиту командной строки
- Утилита восстановления сеанса
- * Командлет Stop-TSSession
Как выкинуть пользователя из оснастки управления RDS
Итак, у меня есть любимый тестовый пользователь Active Directory Барбоскин Геннадий Викторович. Предположим, он подошел к терминальному столу, и из-за блокировки его сеанса нам нужно его вытащить. Первый способ – использовать оснастку управления фермой RDS, я уже говорил вам, как ее создать. Откройте раздел с вашей коллекцией фермы RDS. Введите логин или фамилию нужного сотрудника в поисковый фильтр. В итоге получаем хост, на котором он работает.
Щелкните по нему правой кнопкой мыши. В контекстном меню появится пункт «Выйти», что соответствует окончанию сеанса (Выход). Также есть пункт «Отключить», если вы его выберете, пользователь будет выгнан с терминального сервера, но его сессия останется на нем, эта операция эквивалентна тому, если пользователь только что нажал на крестик в окне с именем терминального сервера.
После выбора пункта «Отключить» сеанс пользователя в ферме RDS отключится нормально. Пользователь сам увидит сообщение «Служба профилей пользователей запущена» и окно закроется без ошибок.
Второй метод разлогинить пользователя на терминальном сервере
Второй метод аналогичен первому, за исключением того, что вам нужно войти на требуемый сервер, открыть оснастку диспетчера задач и выйти из системы пользователя. Сказав это, я рассказал вам, как добраться до нужного члена фермы RDS. Затем щелкните правой кнопкой мыши в области запуска и выберите в контекстном меню пункт «Диспетчер задач». Кстати, вы также можете вызвать «Диспетчер задач» с помощью сочетания клавиш CTRL + SHIFT + ESC.
Находим нужного нам пользователя и кликаем по нему правой кнопкой, в интересующем нас контекстном меню пункт «Выход». Выбираем его и завершаем сеанс пользователя.
Так бывает, что первые два метода не помогают в тех случаях, когда сеанс пользователя зависает на сервере терминалов, кажется, что вы делаете выход из графического интерфейса, но это не работает. В этих случаях вам нужно использовать командную строку или утилиты PowerShell
Использование утилиты RWINSTA
Если вы окажетесь в ситуации, когда графические методы не позволяют вывести пользователя из системы, а это необходимо, утилиты командной строки придут вам на помощь. RWINSTA – это встроенная утилита Windows, которая позволяет восстанавливать сеансы на основе идентификатора сеанса и имени сеанса. Прежде всего, вам нужно вычислить либо идентификатор сеанса, либо его имя, как я вам сказал, обо всех известных мне методах, с которыми вы можете ознакомиться. Выберу утилиту qwinsta. Пишем команду:
qwinsta | findstr barboskin.g (местный)
или удаленно qwinsta / server: имя сервера | findstr barboskin.g
В моем примере имя сеанса – rdp-tcp # 172, а его идентификатор – 515. Мы пишем команду:
rwinsta rdp-tcp # 172 / сервер: localhost или rwinsta 515 / сервер: localhost
И в первом, и во втором случае пользователь будет отключен от этого сервера. Эту команду можно запускать удаленно с вашего рабочего места, если у вас есть право выйти из системы. Этот метод мне не раз помогал в моей практике, например, случай с заблокированным сеансом на Windows Server 2016, где вместо имени пользователя было имя (4).
Как отключить пользователя через reset session
вы также можете завершить сеанс пользователя с помощью утилиты командной строки Reset Session. В текущем примере у моего Геннадия Викторовича Барбоскина имя сеанса rdp-tcp # 16 с его ID 11. Эту утилиту можно использовать как локально на самом терминальном сервере, так и на вашей рабочей станции, также есть ключ / сервер.
восстановить сеанс rdp-tcp # 16 или восстановить сеанс 11
Вы можете узнать больше об утилите восстановления сеанса на веб-сайте Microsoft: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/reset-session
Как отключить пользователя через logoff
Вы также можете выйти из учетной записи пользователя или даже из заблокированной с помощью утилиты командной строки «LogOff». В этом примере Геннадий Барбоскин имеет имя сеанса rdp-tcp # 43. В командной строке от имени администратора введите:
logoff rdp-tcp # 43 / server: localhost (имя сервера можно изменить) или logoff 54 / server: localhost
Выход пользователя через командлет Stop-TSSession
Есть замечательный командлет Stop-TSSession. Давайте посмотрим на идентификатор сервера и имя сеанса, для этого в открытом PowerShell введите:
Get-TSSession | FT
В результате я вижу, что пользователь barboskin.g имеет SessionID 3. Итак, введите
Принудительный стоп-TSSession 3 или Stop-TSSession 3-Force
Мы согласны с тем, что для этого пользователя будет выполнен выход. Проверяем, что сессия закончилась. Вы можете отключать сеансы с помощью такого простого скрипта из планировщика:
Модуль импорта PSTerminalServices
Get-TSSession -ComputerName SERVER_NAME -filter {$ _.IDsession -ne 0 -AND $ _.IDsession -ne 1 -AND $ _.IDsession -ne 65536} | Stop-TSSession – Force
Выход пользователя через командлет Stop-TerminalSession
Этот командлет устанавливается отдельно с пакетом Pscx. Прежде всего, мы видим локально или удаленно идентификаторы сеанса пользователя, для которого мы хотим выйти. Выполняем команду:
Get-TerminalSession – имя сервера ComputerName
Мне нужен идентификатор сеанса 427. Затем мы воспользуемся командлетом Stop-TerminalSession, чтобы выгнать пользователя и завершить его сеанс.
Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force
Как видите, сеанс 427 больше не существует, и мы смогли исключить пользователя из сеанса RDS с помощью командлета Stop-TerminalSession.
Как правильно завершить сеанс на удаленном рабочем столе?
Для правильной работы сервера, экономии оперативной памяти, выделенной вашему виртуальному серверу, важно правильно завершать сеансы пользователей на удаленном рабочем столе.
В случае, если не правильно завершать сеансы RDP, то отключенные но не закрытые сеансы удаленных рабочих столов пользователей накапливаются на сервере и забивают всю память и сервер начинает тормозить, затрудняя работу других пользователей.
Как нельзя завершать сеанс?
В случае, если пользователь просто закрывает сеанс крестиком наверху экрана, все открытые программы, сам сеанс пользователя удаленного рабочего стола, остаются открытыми. Соответствено сеанс и программы, 1С и прочие, продолжают занимать память и мощность сервера.
Завершение сеанса RDP на Server 2016
Для завершения сеанса на терминальном сервере работающем под управлением Windows Server 2016 выполните следующие действия:
Откройте стандартное меню ПУСК, и в левой части экрана выберите НЕ кнопку ВКЛ\ВЫКЛ, а чуть выше значок с иконкой пользователя.
После этого правильным способом завершить сеанс, будет нажатие на пункт меню «ВЫХОД».
Пункт «Заблокировать», будет равносилен неправильному завершению сеанса, т.к. на рабочем столе остануться открытыми все программы и документы.
Перед выходом с сервера убедитесь, что вы сохранили все документы и правильно закрылы окна программ 1С и Office.
В случае работы из под учетной записи «Администратор» и выборе нижнего пункта меню (со значокм «ВКЛ») вы можете случайно ВЫКЛЮЧИТЬ сервер и отключить от работы всех пользователей работающих на сервере без их ведома. Будьте внимательны!
Завершение сеанса RDP на Server 2012
Для правильного завершения сеанса подключения к удаленному рабочему столу Windows 2012, на сервере арендованном в нашей компании, необходимо выполнить следующие действия:
На наших серверах установлена программа Classic Shell, поэтому меню ПУСК выглядит более привычно глазу пользователя.
Для завершение сеанса и закрытия всех программ, необходимо просто выполнить нажатие на меню ПУСК и выбрать пункт «Завершение сеанса».
В случае работы из под Администратора необходимо соблюдать осторожность, так как данное выпадающее меню также содержит пункт «Завершение работы» с помощью которого соответственно останавливается работа всего сервера и завершаются сеансы всех пользователей.
Как правильно завершить работу сервера?
Ознакомьтесь с нашей статьей, как правильно завершать работу сервера, работающего на операционной системе Windows Server 2012 или 2016.
Посмотреть цены на сервера для 1С: