You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2019终端服务器批量注销脚本添加用户例外求助

解决方案

我们可以通过定义例外用户列表,在原有注销逻辑中增加判断:仅当用户不在例外列表内且会话处于断开状态时,才执行注销操作。

修改后的脚本如下:

@echo off

REM 注销断开状态的Citrix用户(排除指定例外用户)

SET SESSION_PFAD=C:\Windows\Temp\Session.txt
REM 定义例外用户列表,用空格分隔多个用户
SET EXCEPT_USERS="User1 User2 User3 User4 User5"

query session > %SESSION_PFAD%

for /f "eol=> skip=2 tokens=1,2,3,4" %%i in (%SESSION_PFAD%) DO (
    REM 检查会话状态是否为断开(Getr.)
    if "%%k" == "Getr."  (
        REM 检查当前用户是否不在例外列表中
        echo !EXCEPT_USERS! | findstr /i /c:"%%l" >nul
        if errorlevel 1 (
            REM 用户不在例外列表,执行注销
            logoff %%j
        )
    )
)

:END
del %SESSION_PFAD%

关键改动说明:

  • 新增SET EXCEPT_USERS="User1 User2 User3 User4 User5":将需要排除的5个用户名用空格分隔,替换成实际业务中的目标用户名即可。
  • 调整for /f的tokens参数为1,2,3,4:query session输出里用户名通常在第4列(对应变量%%l),确保能正确捕获用户名。
  • 增加findstr判断逻辑:通过findstr检查当前用户名是否在例外列表中,errorlevel 1表示未匹配到(即用户不在例外名单),此时才执行注销。
  • 加入/i参数让findstr不区分大小写,避免因用户名大小写不一致导致判断失效。

注意事项:

  • 务必将User1到User5替换为实际需要排除的用户名,保证拼写完全准确。
  • 若query session的输出列顺序有变化,可先手动运行query session命令查看实际输出,调整tokens对应的变量位置。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:20:48