搞好了,度娘上搜到一篇《WINSEVER2008利用计划任务实现UPS供电自动关机》的豆丁文章,于是照猫画虎炮制成功,具体实现方法如下:
当Gen8网络链接突然断开时Windows会产生以下事件:
日志名称: System
来源: q57nd60a
日期: 2017/2/22 13:01:34
事件 ID: 4
任务类别: 无
级别: 警告
关键字: 经典
用户: 暂缺
计算机:
描述:
HP Ethernet 1Gb 2-port 332i Adapter: The network link is down. Check to make sure the network cable is properly connected.
此时可以创建一个计划任务来触发执行以下命令:
- %windir%\System32\shutdown.exe -s -t 90 -c "The network link is down, the server will shutdown in 90 seconds." -d p:4:1
复制代码
这样倒计时90秒系统就自动关机了。
但是这样还存在一个小缺陷,比如停电后隔了几秒又恢复了供电,系统仍然会继续倒计时直至关机,这样给使用维护带来了不必要的麻烦。不过还好,当每次Gen8正常启动或网络链接恢复时都会产生以下两个Windows事件:
日志名称: System
来源: q57nd60a
日期: 2017/2/24 12:31:21
事件 ID: 15
任务类别: 无
级别: 信息
关键字: 经典
用户: 暂缺
计算机:
描述:
HP Ethernet 1Gb 2-port 332i Adapter: Driver initialized successfully. 日志名称: System
来源: q57nd60a
日期: 2017/2/22 13:18:00
事件 ID: 11
任务类别: 无
级别: 信息
关键字: 经典
用户: 暂缺
计算机:
描述:
HP Ethernet 1Gb 2-port 332i Adapter: Network controller configured for 1Gb full-duplex link.
这样就可以再创建一个计划任务来触发执行
- %windir%\System32\shutdown.exe -a
复制代码
终止当前的关机操作。因为我的交换机从接通电源到启动完成需要60秒,所以在以上示例中我设置的关机倒计时是90秒,这样在停电发生后的前30秒内恢复供电的话,就会取消关机任务。
最后还有一个问题,就是每次Gen8启动都会产生来源: q57nd60a 事件ID: 11这个事件,等于每次Windows启动都会触发一次shutdown -a取消当前关机的操作,不知道这样是否存在什么弊端,总之强迫症又犯了,感觉不爽。
所以估摸着想写个vbs脚本,当执行shutdown -s的同时再生成一个临时文件作为环境Boolean变量,“1”表示有关机操作,“0”表示无关机操作。这样每次执行shutdown -a之前先读取这个文件判断其内容是否为“1”,如果不是就忽略执行一个空操作。不知是否可行 |