Скрипты — как отключить сеансы удаленного рабочего стола?

Скрипты — как отключить сеансы удаленного рабочего стола?

Я ищу способ закрыть все активные сеансы удаленного рабочего стола на компьютере (локальном компьютере). Windows включает несколько команд (rwinsta, qwinsta и т. д.) для просмотра активных сеансов, но я не вижу, как я мог бы легко использовать эту информацию (если только я не проанализирую строку...), чтобы закрыть все сеансы.

Есть ли способ в Powershell (или C#, Batch) закрыть все сеансы удаленного рабочего стола на локальном компьютере?

Спасибо, Мартин.

решение1

Вы можете попробовать использовать недокументированный /smпараметр for query session(в пакетном файле), чтобы упростить сортировку:

FOR /f %%G IN ('query session /sm') DO tsdiscon %%G

решение2

Да, используя tsdiscon из командной строки:

tsdiscon n

где n следует заменить на идентификатор сеанса.

Номер сеанса можно узнать здесь

query session

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

решение3

Вы можете использоватьtsdisconутилита для отключения сеансов. Если вы используете команду "query sessions" из командной строки, вы можете увидеть список идентификаторов, а затем выполнить команду tsdiscon для каждого из них.

Такая конструкция цикла должна работать.

FOR /f %%G IN ('q.bat') DO tsdiscon %%G

где находится q.bat

query session /sm | find "Active"

Это приведет только к отключению удаленных сеансов и игнорированию пользователя консоли.

решение4

Вы можете использовать модуль 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

Связанный контент