Windows 2008 отключить пользователя

Обновлено: 03.07.2024

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

Любой сервер в том числе и виртуальный сервер должен работать в постоянном режиме 24 х 7 х 365. И соответственно пользователь, который запускает программы на выполнение на сервере, рассчитывает, что они будут работать в таком же режиме. Именно на это и рассчитывают наши клиенты. Однако устанавливая на VPS сервер различного рода десктопное программное обеспечение, которое разрабатывалось «умельцами» без мысли, что существуют компьютеры, не имеющие мониторов, отключившись от сервера через какое-то время замечают, что его программа перестала работать должным образом, при том что сервер активен и доступен. Замечают это как правило при следующем подключении к серверу для анализа данных с как подразумевалось работавшего ПО. Проблема, очевидно в том, что данное ПО что-то пытается брать со свойств экрана (разрешение, позиция курсора и т.д.) при том, что ни экрана, ни курсора при отключенном сеансе нет.

Данная проблема является частным случаем ограничения работы сеансов по времени, за которую отвечает узел групповой политики «Службы удаленных рабочих столов» с одноименным названием «Ограничение сеансов по времени». Он позволяет гибким образом настраивать время работы запущенных сеансов или Ваших сотрудников на сервере при организации рабочих мест, что позволяет Вам более оптимально использовать ресурсы арендуемого сервера Windows VDS.

Запустим на сервере редактор «Локальной групповой политики» нажав сочетание клавиш Win+R и Набрав команду GPEDIT.MSC


Далее необходимо перейти по следующему пути в ветке «Конфигурация пользователя», если Вы хотите произвести настройки для текущего пользователя или в ветке «Конфигурация компьютера», если Вы хотите настроить для всех пользователей сервера.


1.«Задать ограничение по времени для отключенных сеансов»

При помощи этого параметра Вы можете указать промежуток времени в минутах, часах или днях, на протяжении которого открытые программы будут продолжать работать после отключения от сервера.

Если Вы хотите, чтобы Ваша программа работала на сервере в постоянном режиме и не происходило «автовыхода» при отключении, то данный параметр следует указать как Включен и выбрать Никогда. Что является решение выше описанной ситуации.


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

2.«Задать ограничение по времени для активных, но бездействующих сеансов служб удалённых рабочих столов»

Бездействующим сеансом считается тот сеанс, когда удаленный рабочий стол начинает простаивать без каких-либо операций ввода, со стороны пользователя. Сотрудник может подключиться к удаленному рабочему столу сервера, а затем по завершении рабочего дня попросту забыть отключиться от сервера и уйти домой. В таком случае сеанс активен, но простаивает и ресурсы выделяемые сервером и зарезервированные для этого пользователя, простаивают и соответственно расходуются не эффективно. В таком случае можно указать Включено и указать необходимо количество времени, после которого при простое, сеанс будет завершен.


3.«Задать ограничение по времени для активных сеансов служб удалённых рабочих столов»


Во втором и третьем случае обязательно включение параметра «Завершать сеанс при достижении ограничения по времени». Включение данного параметра указывает, чтобы производилось именно завершение сеанса пользователя, в противном случае будет производится только отключение сеанса, но не его завершение.



4.«Задать предел времени для выхода из сеансов RemoteApp»

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

Описание проблемы

Методы завершения сессии пользователя не терминале

Существует несколько методов позволяющие выкинуть пользователя с сервера.

  • Завершить сессию пользователя (Сделать log off) вы можете из оснастки управления RDS фермой
  • Разлогинить пользователя можно и на самом терминальном сервере из диспетчера задач
  • Выход пользователя можно выполнить из утилиты командной строки rwinsta
  • Утилита командной строки log off
  • Утилита reset session
  • * Командлет Stop-TSSession

Как выкинуть пользователя из оснастки управления RDS

И так, у меня есть мой любимый, тестовый пользователь в Active Directory, по имени Барбоскин Геннадий Викторович. Предположим, что он зашел на терминальный стол и нам по причине зависания его сессии, нужно сделать ему выход. Первый метод, это использование оснастки по управлению RDS фермой, я вам рассказывал, как ее собирать. Открываем раздел с вашей коллекцией RDS фермы. В поисковом фильтре указываем логин или фамилию нужного сотрудника. В результате получаем хост, где он работает.

выход пользователя

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

как выкинуть пользователя-03

Второй метод разлогинить пользователя на терминальном сервере

Второй метод, похож на первый, за исключением того, что нам необходимо залогиниться на нужный сервер, открыть оснастку "Диспетчер задач" и уже из него произвести выход пользователя. Сказано сделано, о том, как вам попадать на нужного участника RDS фермы я рассказывал. Далее щелкаем правым кликом по области пуска и из контекстного меню выбираем пункт "Диспетчер задач". Кстати, вызвать "Диспетчер задач" можно и через сочетание клавиш CTRL+SHIFT+ESC.

как выкинуть пользователя-04

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

Выход пользователя в диспетчере задач

Бывает так, что первые два метода не помогают в случаях, когда пользовательская сессия зависает на терминальном сервере, вы вроде бы из графического интерфейса делаете выход, но оно не отрабатывает. В таких случаях нужно использовать утилиты командной строки или PowerShell

Использование утилиты RWINSTA

Если вы попали в ситуацию, когда графические методы не позволяют вам произвести выход пользователя из системы, а это необходимо, то вам на помощь придут утилиты из командной строки. RWINSTA - это встроенная в Windows утилита, которая позволяет сбрасывать сессии, по ID и имени сеанса. Первым делом вам нужно вычислить или ID сессии или ее имя, я вам рассказывал, о всех известных мне методах. можете ознакомиться. Я выберу утилиту qwinsta. Пишем команду:

или удаленно qwinsta /server:имя сервера | findstr barboskin.g

Использование утилиты RWINSTA

И в первом и во втором случае, пользователь будет разлогинен с данного сервера. Данную команду можно запускать удаленно, со своего рабочего места, главное, чтобы были права на log off. Данный метод меня ни раз выручал в моей практике, например случай с зависшей сессией на Windows Server 2016, где вместо логина пользователя было имя (4).

Как отключить пользователя через reset session

Как отключить пользователя через reset session

Как отключить пользователя через logoff

Как отключить пользователя через logoff

Выход пользователя через командлет Stop-TSSession

Есть такой замечательный командлет Stop-TSSession. Посмотрим на сервере ID и имя сеанса, для этого в открытой оболочке PowerShell введите:

В итоге я вижу, что у пользователя barboskin.g SessionID 3. Далее пишем

Stop-TSSession 3 или принудительно Stop-TSSession 3 -Force

Выход пользователя через командлет Stop-TSSession

Соглашаемся с тем, что будет производиться log off для данного пользователя. Проверяем, что сессия завершена. Можно вот таким простеньким скриптом из планировщика задач, разлогинивать сессии:

Import-Module PSTerminalServices
Get-TSSession -ComputerName SERVER_NAME -filter | Stop-TSSession –Force

Выход пользователя через командлет Stop-TerminalSession

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

Get-TerminalSession

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

Я ищу некоторые идеи о том, как отключить, выйти из системы или сбросить сеанс пользователя на сервере терминалов 2008 года (он не может войти в систему как пользователь, поскольку он полностью заблокирован). Это производственная среда, поэтому перезагрузка сервера или выполнение чего-то в масштабах всей системы сейчас не может быть и речи. Любые подсказки Powershell, которые помогут нам в этом?

Мы попытались отключить, отключить пользователя и сбросить сеанс, а также убить процессы сеанса, непосредственно с того же сервера терминалов (из диспетчера задач, диспетчера служб терминалов и монитора ресурсов) без каких-либо результатов .

ОБНОВЛЕНИЕ: Мы закончили перезагрузку сервера, как никакие другие попытки, о которых мы могли думать, работали. Я оставлю этот вопрос открытым, надеясь, что у кого-то может быть больше информации об этой проблеме, и это потенциальные исправления

23 ответа

Я хочу поделиться, как сбросить учетную запись без необходимости перезагрузки сервера. Прежде всего, вам нужно иметь доступ администратора к серверу. Я использую следующую опцию входа: mstsc /v: имя_сервера /console /admin , чтобы получить доступ к серверу. Затем в «Диспетчере Windows Taks» перейдите на вкладку Пользователи и сделайте правый щелчок по учетной записи, которую вы хотите «Выйти из системы», выберите выход из системы. Это должно освободить заблокированный сеанс, используемый этой учетной записью.

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

Затем пользователь смог войти в систему под учетной записью.

Нет необходимости перезагрузки и не требуется загружать программное обеспечение сторонних разработчиков.

Простой ответ заключается в том, чтобы запустить командную строку с повышенными правами и ввести «Taskmgr», а затем разрешить вам выйти из нее на вкладке USERS. Он не будет работать, не находясь на возвышенном сеансе.

p.s. Я не мог найти способ заставить убить сеанс: (

У нас была аналогичная проблема с нашим сервером удаленных рабочих столов Windows Server 2008 R2. Пользовательский сеанс показал «Актив» при просмотре RDS Manager, но не имел ассоциированного идентификатора сеанса связи или подключенного устройства (оба были пустыми).

Мы также перезагрузили сервер.

У меня была такая же проблема в Windows Server 2016. Пользователь не смог войти в систему.

Итак, я попытался выполнить следующие шаги, чтобы отключить сиротский сеанс:

  1. в CLI qwinsta перечислены все доступные сеансы, неактивные и активные, есть один отключенный сеанс (называемый «getr.» на снимке экрана) без имени пользователя, но идентификатор сеанса.

с идентификатором сеанса (7) из 1. Я попытался убить этот сеанс с помощью сеанса сброса 7 (fyi: rwinsta является псевдонимом для сброса сессия)

он работал на один сеанс, но в следующий раз он просто не имел эффекта, поэтому я открыл диспетчер задач и вкладку пользователя. Там вы найдете один расширяемый список, назначенный каждому пользователю удаленного рабочего стола - один список не имеет имени пользователя в нем и только показал 4 выполняемых задачи.

Я попытался сделать очевидный: отключение пользователя. Без всякого эффекта.

  1. Итак, я попытался завершить эти 4 задачи, назначенные этому пользователю. Будьте осторожны, потому что некоторые задачи, а самое главное csrss.exe, когда они были убиты, также приведут к перезагрузке системы. Я пропустил их и просто убил некоторые очевидные задачи RDP.

После Step /Try 4 даже последний разбитый сеанс был убит, и пользователь смог снова войти в систему

  1. Если это все еще не работает, попробуйте это решение из еще один вопрос : когда вы подключаетесь к клиенту RDP, нажмите кнопку« details ». Там вы должны увидеть ошибку, и вы даже можете нажать retry или игнорировать .

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

У коллеги была такая же проблема; не удалось выйти из системы или выполнить сброс, и все его процессы были вручную отключены. Когда я попытался получить доступ к gui для системы, он удалил FROM, я нашел окно учетных данных, скрывающееся за удаленным сеансом.

У меня была бы такая же ситуация: Windows Server 2008 R2 с службами удаленного рабочего стола, соединение RDP, настроенное для выхода из системы после сеанса, неактивно или отключено через 3 часа, и все же некоторые сеансы остаются заблокированными. Я попытался вывести их как с Remote Desktop Manager, так и с qwinsta /quser без успеха.

Вот как я его разрешил:

  1. Я установил идентификатор сеанса с помощью qwinsta .
  2. Я нашел PID winlogon.exe для зависающего сеанса с помощью query process /ID:yourid .
  3. Я убил процесс с помощью taskkill /f /PID yourPID .

Путь. Я бы хотел, чтобы иначе найти решение для этого не произошло.

Что для меня работало:

  • войти на сервер
  • открыть диспетчер задач
  • найдите пользователя на вкладке пользователя
  • щелкните правой кнопкой мыши, подключитесь, введите пароль пользователя, я увидел экран «Подождите»
  • нажмите alt-tab, которая вышла на сервер с сервера и вышла из системы.

У меня была эта проблема с заблокированными пользователями Remote Desktop. Я написал этот сценарий Powershell для выполнения запланированной задачи, чтобы отключить пользователей, которые были отключены в течение более 2 минут. Единственное редактирование, которое требуется, - это SERVERNAME , который я установил для исключения сервера броузера удаленного рабочего стола, однако вы можете исключить любой сервер, который вам нравится, или вообще ничего.

Мой скрипт был написан для Windows Server 2012 R2, кстати .

Сценарий делает это:

  • Получает список всех сеансов пользователя на удаленном компьютере.
  • Игнорирует любые сеансы, которые не говорят «STATE_DISCONNECTED».
  • Игнорирует сервер брокера (или любой другой сервер)
  • Игнорирует любые сеансы без единого идентификатора сеанса
  • Игнорирует любые сеансы, не имеющие времени отключения
  • Для сеансов, которые имеют время отключения, он проверяет текущий времени, и если разность времени между временем и временем разъединения больше, чем X минут (в этом случае 2), убивает процесс winlogon.
  • Он также пытается выдать команду выхода из системы (это, скорее всего, сбой после завершения процесса winlogon).

Это работает для меня! Надеюсь, это поможет кому-то еще! :)

Или, если вы предпочитаете версию, в которой вы можете видеть, что происходит на экране:

Создайте файл в блокноте и назовите его findession.cmd. Поместите команду Query Session /server: имя_сервера | найти /i "% 1" и сохранить в каталог. Создайте еще один файл с именем resetsession.cmd и поместите команду Reset Session% 1 /server:% 2 и сохраните.

В командной строке перейдите в каталог, в который вы сохранили эти файлы, и введите имя пользователя наследования (логин пользователя, которого вы пытаетесь найти). Нажмите Enter, и вы увидите идентификатор входа и сеанса. Введите resetsession.cmd ID Servername, и он сбросит этот сеанс. Я использую это ежедневно, и это очень быстро для поиска пользователей и сброса их сеансов.

  1. Найдите идентификатор сеанса с помощью qwinsta .
  2. Убейте все процессы в сеансе taskkill /FI "SESSION eq 1" /F , предполагая, что идентификатор сеанса, который вы хотите завершить, возвращался из qwinsta, был 1.

Это работало на Server 2012 версии 6.2 Build 9200, я бы ожидал, что он будет работать со всей версией окон.

Этот сценарий командной оболочки работал для меня, он даже дает хороший файл журнала. Я получил его из здесь : Надеюсь, это поможет кому-то еще, так как другие ответы имеют много предварительных условий и не работают для меня.

Edit:
Первоначально я использовал этот скрипт для выхода из системы и закрытия всех «отключенных» сеансов. У нас есть несколько терминальных серверных приложений со многими пользователями и ограниченными лицензиями. Отключенные сеансы будут оставаться открытыми в течение очень долгого времени, и иногда они останутся открытыми на неопределенный срок. Это привело к неиспользуемым сессиям, которые занимались бы некоторыми лицензиями, и другие пользователи тогда не смогут подключиться в результате.

  • Я запускаю скрипт, используя запланированную задачу, чтобы регулярно проверять и использовать отключите сеансы на некоторых моих серверах. Он работает автономно
    без какого-либо взаимодействия.
  • Я использую его на Windows 2008 R2 Server и Windows 2012 R2 Server операционные системы.
  • Он закрывает сеансы, которые были отключены.
  • Он обновляет файл журнала с пользователями или сеансами, которые он отключил.

Возможно, процесс все еще запущен, блокируя процесс выхода из системы. Проверьте выполняемые процессы для затронутого пользователя. Затем уничтожайте процесс один за другим, чтобы увидеть, что одна из них вызывает проблему.

Проверьте также ключ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run , в котором запускаются только Процессы. В 64 бит это HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run .

Вы можете загрузить инструмент Process Explorer от Microsoft и использовать что для решения вашей проблемы. Если у вас есть идентификаторы сеанса, вы можете найти их соответствующие процессы. Затем, если сеанс пользователя отключен, вы можете убить процесс с помощью Process Explorer.

Не совсем такая же среда (у нас есть 2012r2), но перезапуск службы виртуальной машины Hyper-V (VMMS) выпустил соединение для меня.

Вам нужно щелкнуть по процессу и показать процесс от всех пользователей, а затем вы сможете отключиться.

почему не следует создавать политику сеанса в конце сеанса хоста сеанса удаленного рабочего стола, отключенного или незанятого сеанса после определенного интервала.

Мое исправление: в другой сети я подключился к серверу проблем с помощью средства управления компьютером, в открытых сеансах я щелкнул правой кнопкой мыши и закрыл каждый открытый файл, после чего смог подключиться через mstsc

вы всегда можете использовать powershell с вашей локальной машины и делать это удаленно

К сожалению. Моя сеанс пользователя был отключен. Диспетчер задач не показывал никаких процессов, выполняющихся как пользователь. Я не мог вывести пользователя из диспетчера задач. Я попробовал команду сбросить идентификатор сеанса и снова замерзал. Мне пришлось закончить вход в другой сеанс в качестве администратора, удаление учетной записи и повторное создание нового.

Вы пытались выпустить пользователя из диспетчера служб удаленных рабочих столов? Перейдите в «Администрирование» -> Службы удаленных рабочих столов -> Диспетчер удаленных рабочих столов и выйти из сеанса. Это может сработать.

Я ищу некоторые идеи о том, как отключить, выйти из системы или сбросить сеанс пользователя на сервере терминалов 2008 (невозможно войти в систему как пользователь, так как он полностью заблокирован). Это производственная среда, поэтому о перезагрузке сервера или выполнении общесистемных операций пока не может быть и речи. Какие-нибудь хитрости Powershell, чтобы помочь нам с этим?

Мы попытались отключить, отключить пользователя и сбросить сеанс, а также убить процессы сеанса также напрямую с одного и того же сервера терминалов (из диспетчера задач, диспетчера служб терминалов и монитора ресурсов) без результатов.

ОБНОВЛЕНИЕ: Мы закончили тем, что перезагрузили сервер, поскольку никакие другие попытки, о которых мы могли думать, не работали. Я оставлю этот вопрос открытым, надеясь, что у кого-то будет больше информации об этой проблеме, и это потенциальные исправления

Потенциально полезные ссылки для любого, кто сталкивается с этой проблемой, идет вперед

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

Затем пользователь смог снова войти в систему под учетной записью.

Никакая перезагрузка не была необходима, и никакое стороннее программное обеспечение не должно было быть загружено.

-Спасибо, спас меня от перезагрузки сервера! Действительно не хотел выгнать всех в течение рабочего дня из-за 1 застрявшей сессии. Безопасно ли убивать эти процессы? Мой пользователь имеет csrss.exe , dwm.exe , LoginUI.exe и winlogon.exe . Я думал, что убийство winlogon.exe вызовет BSOD .

Я хочу поделиться тем, как я сбрасываю учетную запись без необходимости перезагрузки сервера. Прежде всего вам необходимо иметь доступ администратора к серверу. Я использую следующую опцию входа в систему: mstsc / v: имя_сервера / console / admin для доступа к серверу. Затем в «Менеджере Windows Taks» перейдите на вкладку « Пользователи » и выполните правый клик по учетной записи, для которой вы хотите «Выйти», выберите «Выйти из системы». Это должно освободить заблокированный сеанс, используемый этой учетной записью.

кроме этого не всегда. Плюс ОП сказал, что они уже попробовали это. Для этой проблемы кнопка «Выход» в диспетчере задач → Пользователи ничего не делает.

Простой ответ - запустить командную строку с повышенными привилегиями и ввести «Taskmgr», после чего вы сможете выйти из сеансов на вкладке USERS. Это не будет работать без участия в повышенном сеансе.

Не для меня. Также не может использовать TaskManager в качестве администратора, чтобы убить любой из процессов пользователя либо.

date

09.08.2012

directory

Windows Server 2008

comments

комментариев 7

Достаточно часто при работе на терминальном сервере для решения проблем пользователей приходится удалять их профили, тем самым при следующем входе пользователя будет создан новый чистый профиль. Однако многие системные администраторы Windows при переходе с Windows 2003 на Windows 2008 сталкиваются с тем, что удаление профиля в этих ОС необходимо выполнять по разному. Если в Windows Server 2003 было достаточно удалить профиль пользователя из каталога C:\Documents and Settings, то в Windows 2008 не все так просто.

Во-первых, как вы знаете, в Windows Server 2008, Windows Vista и Windows 7 локальные профили пользователей хранятся в каталоге C:\Users. Кроме того, эти ОС ведут учет всех локальных профилей в веке реестра “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList” Для каждого профиля, который хранится локально, внутри этого раздела реестра создается подраздел. Имя подраздела – это SID учетной записи пользователя. Сопоставить имя пользователя и SID можно с помощью PsGetSid так, или же просто откройте любую ветку и посмотрите значение параметра ProfileImagePath.

Что будет, если просто удалить каталог с профилем пользователя?

Event ID 1511.Your user profile was not loaded correctly. You have been logged on with a temporary profile. Changes you make to this profile will be lost when you log off. Please see the event log for details or contact your administrator.

Event ID 1511.Your user profile was not loaded correctly.

А как вы знаете, временный профиль Windows – это профиль, который загружается при наличии проблем с нормальным профилем, и который при завершении сеанса, не сохраняется.

Как же корректно удалить профиль пользователя в Windows 2008?

Воспользуйтесь одним из следующих методов удаления профиля:

  1. Удалите каталог с профилем пользователя И соответствующую ему ветку реестра в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList
  2. Откройте Пуск > Выполнить и наберите sysdm.cpl. Перейдите на вкладку Advanced, затем в разделе User Profiles нажмите кнопку Settings и удалите нужный (или ненужный :)) вам профиль пользователя.

Удалить профиль пользователя

Поздно, я уже удалил каталог с профилем пользователя, что делать?

Не беспокойтесь, к счастью, Windows достаточно умна. Если система находит в реестре в ветке ProfileList, SID пользователя, с которым не ассоциирован ни один каталог с профилем пользователя (C:\Users\”username”), она создает резервную копию этой ветки с расширением .bak. Просто удалите эту резервную ветку.

Читайте также: