脚本 - 如何断开远程桌面会话?

脚本 - 如何断开远程桌面会话?

我正在寻找一种方法来关闭计算机(本地计算机)上所有活动的远程桌面会话。 Windows 包含几个命令(rwinsta、qwinsta 等)来查看活动会话,但我不知道如何轻松使用这些信息(除非我解析字符串...)来关闭所有会话。

Powershell(或 C#、Batch)中有没有办法关闭本地计算机上的所有远程桌面会话?

谢谢,马丁

答案1

您可以尝试使用未记录的/sm参数query session(在批处理文件中)来更轻松地对事物进行排序:

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

答案2

是的,从命令行使用 tsdiscon:

tsdiscon n

其中 n 应该替换为会话 ID。

您可以从

query session

既然你说你想关闭全部本地计算机上的会话,我想您需要注意执行此操作的顺序(即最后关闭会话)。

答案3

您可以使用tsdiscon实用程序来断开会话。如果您从命令提示符中使用“查询会话”命令,则可以看到 ID 列表,然后为每个 ID 发出 tsdiscon 命令。

像这样的循环结构应该可以工作

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

其中 q.bat 是

query session /sm | find "Active"

这只会断开远程会话并忽略控制台用户。

答案4

您可以使用 PSTerminalServices PowerShell 模块:

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

相关内容