当没有人在指定的时间login时closures客户端

在我们公司,人们在晚上7点停止工作。 在晚上8点,我们使用GPO运行计划任务,警告login用户计算机将要closures。 这工作正常。

当没有人login并且计算机仍在运行时,我们想要closures计算机。 有没有人知道如何做到这一点?

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

计算机关机相当容易 – 正如其他人已经注意到,你可能会使用shutdown命令。 如果您已将计算机的本地防火墙configuration为允许来自pipe理主机的SMB和RPC(例如通过在组策略中启用远程pipe理例外),则可以使用/m \\computername参数集中closures域中所有计算机的closures您的关机电话:

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

psshutdown提供了一个更灵活的关机命令版本, 作为psshutdown 。 除此之外,它允许用户交互(即,如果需要,用户将有机会中止closures请求)

现在为了确定一个用户是否login到一台机器,你将不得不testing他们每一个,例如使用quser命令。 典型的输出将如下所示:

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

你可以过滤一个string,如“有效”,以确定您是否可以安全地closures。 批处理版本可能如下所示:

shutdownunused.bat

 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" 

调用shutdownunused.bat pc1234将testing并closurespc1234,如果它是a)pingable和b)没有用户积极login(它会closures主机,如果用户login,但断开连接或他的机器被locking)。 可以根据自己的喜好编写脚本 – 可以将本地版本用作计划任务,也可以通过列举域中的所有工作站来集中pipe理主机。 后一种方法的优点是保存日志和创build统计信息会更容易。

除了有关Windows更新提到的内容,AV扫描和启动时间。 您可以利用您提到的在计算机上使用shutdown /f /t 0运行batch file的相同计划任务GPO 。

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

Nixphoe已经得到了你要找的命令。 但是有一些build议:首先,在创build计划任务时,确保在“条件”选项卡(在创build新任务)下设置为在计算机闲置xxx分钟之前不会被触发 – 这将有助于防止呼叫来自迟到的用户在计算机工作时“自行closures”。

另外,使用一个batch file – 虽然很好 – 对于这样的“单行”是不必要的,您可以简单地在“编程/脚本”下的“closures”在参数“/ s / f / t 30”(或任何数字)下,它将运行整个行

 Shutdown /s /f /t 30 

我build议/吨30而不是/ t 0,因为它会给最终用户一些警告之前,你强制closures。 让我们知道怎么回事!

我在batch file中使用以下命令,然后通过我的部署解决scheme将其发送到每个选定的计算机作为计划任务:

 for /f %%i IN ('quser ^| find /c /i "active"') DO (if %%i EQU 0 shutdown /s) 

您也可以使用Stop-Computer CMDLet。 默认情况下,如果用户仍然login,则不会closures计算机,在这种情况下,您需要使用-Force