【发布时间】:2020-11-15 10:10:32
【问题描述】:
我正在尝试创建一个简单的脚本来终止所有远程桌面会话,无论是活动的还是断开的,而无需重新启动服务器。我的服务器操作系统是 Windows Server 2012R2,启用并获得了远程桌面服务。
我在这里找到了一个简单的批处理文件脚本来执行此任务:enter link description here
当我在终端服务器上本地运行此脚本时,我在批处理文件运行时收到错误消息:找不到会话光盘
并且只有控制台用户被注销。谁能告诉我这个脚本有什么问题?
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
【问题讨论】:
-
例如,在第二行中,第三个标记是
Disc,尽管您可能期待0,因为没有USERNAME的条目... -
第三个token不是ID吗?
-
第三个token是数据中有
sessionname和username时的ID。FOR /F命令默认用空格和制表符分隔输出。这些是数据之间的空格。 -
好的。那么如何调整我的脚本以终止所有会话,无论是否有会话名称或用户名
-
输出是定宽文本,所以就这样处理,意思是用sub-string expansion去掉会话和用户名……
标签: batch-file windows-server-2012-r2 remote-desktop