当指定时间内无人登录时关闭客户端

当指定时间内无人登录时关闭客户端

在我们公司,人们晚上 7 点就下班了。晚上 8 点,我们用 GPO 运行计划任务,警告登录用户计算机即将关闭。这很有效。

当没有人登录且计算机仍在运行时,我们想关闭计算机。有人知道如何做到这一点吗?

我们运行的是 Windows Server 2012,我们的客户端是 Windows 7。

答案1

计算机关机相当简单 - 正如其他人所指出的,您可以使用该命令来实现这一点。如果您已将计算机的本地防火墙配置为允许来自管理主机的 SMB 和 RPC(例如,通过在组策略中启用远程管理例外),则可以使用关机调用的参数shutdown集中触发域中所有计算机的关机:/m \\computername

shutdown /s /f /t 30 /m \\pcXXX /c "Automatic shutdown"

更灵活的关机命令版本是由 SysInternals 提供psshutdown。除其他事项外,它还允许用户交互(即,如果需要,用户可以中止关机请求)

现在,为了确定用户是否已登录到计算机,您必须测试每个用户,例如使用命令quser。典型的输出如下所示:

C:\Users\denis>quser
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>denis                 console             1  Active      none   22.04.2014 15:11

您可以过滤“Active”之类的字符串来确定是否可以安全关闭。批量版本可能如下所示:

关机未使用脚本

ping %1
if errorlevel 1 ( echo %1 seems offline && exit 1)
quser /SERVER:%1 | find "Active"
if %errorlevel% == 1 shutdown /s /f /t 30 /M \\%1 /c "Automatic shutdown"

如果 pc1234 a) 可 ping 通且 b) 没有用户主动登录,则调用shutdownunused.bat pc1234将测试并关闭它(如果用户已登录但断开连接或计算机已锁定,它将关闭主机)。您可以根据自己的喜好编写脚本 - 可以使用本地版本作为计划任务,也可以通过枚举域中的所有站点从管理主机集中触发。后一种方法的优点是更容易保存日志和创建统计数据。

答案2

除了提到的 Windows 更新、AV 扫描和启动时间之外。您可以利用相同的计划任务 GPO您提到使用 运行计算机上的批处理文件shutdown /f /t 0

组策略位置:Computer Configuration, expand the Preferences folder, and then expand the Control Panel Settings, Right-click the Scheduled Tasks node, point to New

答案3

Nixphoe 有你要找的命令。不过,我有几个建议:首先,在创建计划任务时,请确保在“条件”选项卡(在“创建新任务”中)下设置,直到计算机空闲 xxx 分钟后才会触发该任务 - 这将有助于防止用户在工作时,计算机“自行关闭”。

此外,使用批处理文件 - 虽然很好 - 但对于像这样的“一行程序”来说是不必要的,您只需转到创建新任务中的“操作”选项卡,在“程序/脚本”下只需输入“关机”,然后在参数“/ s / f / t 30”(或任何数字)下,它将运行整行

Shutdown /s /f /t 30

我建议使用 /t 30 而不是 /t 0,因为它会在强制关机之前向最终用户发出一点警告。让我们知道进展如何!

答案4

您还可以使用 Stop-Computer CMDLet。默认情况下,如果用户仍登录,则不会关闭计算机,在这种情况下您需要使用 -Force

相关内容