Я ищу способ закрыть все активные сеансы удаленного рабочего стола на компьютере (локальном компьютере). В Windows есть пара команд (rwinsta, qwinsta и т. Д.) Для просмотра активных сессий, но я не понимаю, как можно легко использовать информацию (если я не разбираю строку ...) для закрытия всех сессий.
Есть ли способ в Powershell (или C #, Batch) закрыть все сеансы удаленного рабочего стола на локальном компьютере?
Спасибо мартин
Ответы:
Вы можете попробовать использовать недокументированный
/sm
параметр дляquery session
(в командном файле), чтобы упростить сортировку:источник
Да, используя tsdiscon из командной строки:
где n должно быть заменено идентификатором сессии.
Вы можете получить номер сеанса от
Поскольку вы говорите, что хотите закрыть все сеансы на локальном компьютере, я полагаю, вам нужно будет внимательно следить за порядком, в котором вы это делаете (т.е. закрывайте свой сеанс последним).
источник
Вы можете проверить расширения сообщества Powershell. Он включает в себя командлеты Get, Stop и Disconnect TerminalSession.
источник
Вы можете использовать утилиту tsdiscon для отключения сеансов. Если вы используете команду «сеансы запроса» из командной строки, вы можете увидеть список идентификаторов, а затем выполнить команду tsdiscon для каждого из них.
Такая циклическая конструкция должна работать
где q.bat
Это будет только отключать удаленные сеансы и игнорировать пользователя консоли.
источник
Вы можете отключить локальные или удаленные сеансы с помощью tsdiscon.
источник
Я обнаружил, что TSDISCON не удаляет "Disc" на связанных сеансах.
Я заменил ЦДИСКОН на выход.
источник
Вы можете использовать модуль PowerShell PSTerminalServices:
http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx
Get-TSSession -ComputerName server1 -State Active | Disconnect-TSSession -WhatIf
источник
Я знаю, что ОП сейчас довольно старый, но он должен делать то, что вам нужно (и, если кто-то еще все еще ищет что-то подобное, я думал, что все равно отвечу).
Точно так же вы можете использовать
query/reset session
вместоq/rwinsta
...источник
FOR /F %A IN (c:\scripts\ps\computers.txt) DO (FOR /f "tokens=2" %i IN ('qwinsta /SERVER:%A ^| find /i "disc"') **DO if "%i" NEQ "0" ECHO %i** | rwinsta %i /SERVER:%A /V)
источник
Команда TSDiscon отключит сеансы терминальных служб (RDP). Сам по себе отключит текущий сеанс, вы можете указать идентификатор сеанса, который хотите отключить, вы также можете указать имя сервера для отключения.
Полную информацию можно найти здесь .
источник
Вы не указали, хотите ли вы сделать это без выключения или перезагрузки компьютера. Но если вы не возражаете против перезагрузки или выключения, вы можете просто позвонить:
Это фактически приведет к перезагрузке компьютера.
источник
Даже вопрос очень старый, практически нет решений для всех версий без qwinsta / query / tsdiscon, а именно для всех домашних версий Windows.
Однако существует простая версия powershell для отключения сеанса:
Идентификатор сеанса можно получить, например, с помощью
getProcesss
. Для отключения (не выхода!) Сеанса используйте$tstType::DisconnectSession("localhost", 2)
.источник