如何自动从 Windows 机器上注销用户?

如何自动从 Windows 机器上注销用户?

我想确保人们在完成单台特定多用户机器上的工作后立即注销。目前,下一个用户只需“切换用户”即可继续工作,但让多个用户同时登录并打开程序似乎会耗尽资源。

如果用户 24 小时没有活动,是否可以自动将其从机器上注销?


或者,是否可以在午夜注销除当前用户之外的所有人?

该计算机位于 Windows 域网络上 - 尽管我只希望自动注销功能适用于单台机器(而且我不是网络管理员)

答案1

为了注销已断开连接的用户,同时保持当前用户连接,请将以下脚本代码复制到 .cmd 文件(例如“LogOffUsers.cmd”)中,然后在午夜将其作为服务运行:

@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b

该脚本的工作原理是使用查询命令通过搜索短语“disc”来查找已断开连接的用户,然后将其注销。

如果您希望脚本作为服务连续运行,并在用户断开连接或不活动一段时间后注销用户,则可以使用:

@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top

此脚本使用相同的查询命令,但还检查结果中的“IDLE TIME”部分,如果空闲时间大于 32(“GTR 32”),则注销用户。该短语出现两次,因为“IDLE TIME”标记可以出现在两个略有不同的位置。然后以“choice”开头的行等待 2 分钟,然后通过循环到开头再次执行操作。您可以根据需要增加或减少“32”值。

成立这里

答案2

for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))

请注意,上述方法仅适用于空闲时间,如果您想在注销断开连接的会话之前使用数小时的空闲时间,则需要对其进行稍加修改。

for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))

更改 23 以调整小时数,上述操作将在 24 小时或更长时间的空闲时间内起作用。%%h 2012 确保 %%d 值是小时值而不是分钟值。

答案3

我会寻找一种方法来禁用“切换用户”功能。可能有帮助。

相关内容