如何自动从Windows计算机注销用户?


9

我想确保人们在完成一台特定的多用户计算机上的工作后注销。当前,下一个用户将只是“切换用户”并继续工作,但是在打开程序的同时让许多用户登录似乎会占用资源。

如果用户24天内没有活动,是否可以从计算机中自动注销用户?


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

该计算机位于Windows域网络上-尽管我只希望自动注销可在单台计算机上使用(并且我不是网络管理员)


1
这是Windows域网络吗?
摩押

@Moab:计算机位于Windows域网络上-尽管我只希望自动注销功能可用于单台计算机(而且我不是网络管理员)。
乔纳斯(Jonas)

@ Jonas,您的单词选择听起来像一台以上的PC,您可以编辑原始帖子以包含此新信息。
摩押人

@Moab:我试图澄清这个问题。那个更好吗?
乔纳斯(Jonas)

现在,看看。
摩押人

Answers:


6

为了注销断开连接的用户同时保持当前用户的连接状态,请将以下脚本代码复制到.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”),则注销用户。该短语出现两次,因为“空闲时间”令牌可能出现在两个略有不同的位置。然后,以“ choice”开头的行要等待2分钟,然后才能循环到开头再次执行该操作。您可以根据需要增加或减少“ 32”值。

这里找到。


@eMansipater:您介意解释它的作用以及我可以在哪里设置24小时吗?
乔纳斯(Jonas)

1
最好的解决方案是禁用快速用户切换,这将强制注销,然后新用户才能登录其帐户。
摩押

1
@Moab禁用快速用户切换意味着如果先前的用户锁定了屏幕,则非管理员无法登录。@Jonas一个明智的问题-括号中的位是使用来自support.microsoft.com/kb/186592的查询命令,通过搜索短语“ disc”来查找断开连接的用户,然后将其注销。选择命令正在等待仅每2分钟执行一次操作。有没有必要,因为对于这个脚本24小时的选项应该只注销用户如果另一个用户已经登录。
eMansipater

1
@Jonas批处理文件使用“ %% a”,但是要在命令行中执行相同的操作,请键入“%a”,这应该有助于调试。我没有Windows机器,可以尝试使用该脚本,因此可能有一些细微的错误。您可以尝试将“ GTR 32(logoff %% b)”命令更改为不带引号的“ echo logoff %% b”,或键入不带引号的“ echo logoff%b”。这样,它将打印出用户正在尝试注销。如果它显示垃圾内容或什么都不显示,将显示脚本格式错误。恐怕我不知道该如何检查“查询”输出格式。
eMansipater

1
@Jonas我有机会仔细检查查询命令的输出,脚本的那些部分是这样,以便仅在用户闲置了一段时间后才注销。“如果%% d GTR 32”表示令牌%% d大于32时运行注销命令。根据远程桌面的使用情况等,“ idle”令牌可以出现在两个位置,这就是脚本的原因检查这两种情况。修改后的版本无论退出多久都只会注销任何空闲用户。如果可以使用Windows计算机,则可以验证语法。
eMansipater 2011年

1
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值是小时而不是分钟值。


0

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


我实际上喜欢“切换用户”功能:这样,进行长时间计算的人也不会阻止其他用户使用计算机。
乔纳斯(Jonas)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.