豆子新配了个WSUS服务器,工作正常,不过比较恼人的是有时候补丁更新比较多,默认的一次重启不行,还得重启几次才能完成所有安装。如果没有及时重启安装,Windows 2012 默认会在一天之后强制自动重启,如果刚好是工作日,那就傻眼了。


怎么解决呢?豆子打算写个脚本自动检测重启状态,如果有需要的话,就发送重启命令好了。


检测重启状态的脚本网上已经有现成的了,试了试很好用。

https://gallery.technet.microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542


下载了这个脚本之后,稍作修改,就可以实现我的需求了。


简单的测试一下,创建一个数组,放入我的服务器名字, dot source一下下载脚本,里面的局部变量就变成全局变量,这样就可以直接调用该脚本的函数。

然后比较状态重启对应服务器即可。


$names=@("sydwsus","melfs01","sydit01")
. C:\temp\Get-PendingReboot.ps1



$results=get-pendingreboot -computername $names
foreach ($c in $results){
    if ($c.RebootPending -eq "True")
    {
       
      Restart-Computer $c.Computer 
    }
}


另外,如果发现某台服务器处于倒计时的重启状态,但是条件又不允许你重启,那么可以通过关闭windows update的进程和服务来强行终止倒计时。