终止所有 RDP 会话的脚本

Script to Kill All RDP Sessions

我正在尝试创建一个简单的脚本来终止所有远程桌面会话,无论是活动的还是断开的,而无需重新启动服务器。我的服务器 OS 是 Windows Server 2012R2,启用并许可了远程桌面服务。

我在这里找到了一个简单的批处理文件脚本来完成这个任务:enter link description here

当我在我的终端服务器本地 运行 这个脚本时,我在批处理文件 运行s 中收到一条错误消息:找不到会话光盘

并且只有控制台用户被注销。谁能告诉我这个脚本有什么问题吗?

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt

我的会话文本文件如下所示:

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE 
 services                                    0  Disc                        
 >console           Administrator            13  Active                      
                   wcunningham              18  Disc                        
                   kstarkey                 25  Disc                        
 rdp-tcp#11        cyannone                 52  Active                      
 rdp-tcp                                 65536  Listen                      

我发现一个很好的解决方法是添加一条额外的线来处理断开连接的会话。由于断开连接的会话不列出会话名称,因此 ID 位于位置 2 而不是活动会话中的位置 3。所以添加一个额外的行来指定 token=2 就可以了:

query session >session.txt
for /f "skip=1 tokens=2," %%i in (session.txt) DO logoff.exe %%i
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff.exe %%i
del session.txt