【发布时间】:2017-07-24 10:05:48
【问题描述】:
非常感谢以下有关我的问题的任何帮助,我已经在互联网上搜索了很长时间..
我想实现一个用户重启通知脚本,它会检查用户的机器是否超过 24 小时没有重启;如果是,它会给出一个消息框,选择现在重新启动或稍后提醒他们一段时间,然后它会再次弹出。如果用户第三次选择稍后提醒他们,脚本将强制重启并倒计时。
我正在考虑通过 GPO 将其部署为每天都会运行的计划任务。如果用户的机器满足24小时内重启的条件,那么它就什么也不做。
谢谢!
我看到了一些脚本并对其进行了一些修改.. 它可以工作,但是如何在一天之后添加随后的小时和分钟?如果我添加另一个 dateDiff 来输出小时和分钟,我会将整天/秒转换为小时/分钟..
'Set the minimum number of days of uptime to begin issuing the warning.
WarnAfterDays = 0
Set objShell = wscript.createObject("wscript.shell")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
set colComp = objWMI.ExecQuery("Select LastBootUpTime from Win32_OperatingSystem")
For Each item in colComp
dlastReboot = WMIDateStringToDate(item.LastBootUpTime)
dDiff = dateDiff("d",dLastReboot,Now)
if dDiff >= WarnAfterDays Then
do while 1>0
intRebootChoice = MsgBox("This computer has been running for " & dDiff & " days since " & dlastReboot & ". To keep the computer operating optimally a system restart
is recommended." & VBCRLF & VBCRLF & "PLEASE SAVE ALL YOUR WORK BEFORE RESTARTING." & VBCRLF & VBCRLF & "Would you like to restart your computer?" & VBCRLF & "[YES to
retstart now, NO to be reminded later]",308,"NOTICE - REBOOT REQUIRED")
select case intRebootChoice
case 6
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Reboot(1)
Next
case 7
wscript.sleep(30000)
end select
loop
End if
Next
Function WMIDateStringToDate(dtmInstallDate)
WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & _
Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) _
& " " & Mid (dtmInstallDate, 9, 2) & ":" & _
Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, _
13, 2))
End Function
【问题讨论】:
-
您好,欢迎来到 Stackoverflow :) 请使用 tour 并了解有关该网站的一些信息(如果您这样做,甚至会给您一个徽章!)。由于 Stackoverflow 不是免费的代码编写服务,您应该展示您的努力并发布一些您尝试过的代码或您在编程过程中遇到的问题(甚至更好)。
-
请先使用
DateDiff和systeminfo | find /i "Boot Time"自己尝试一个脚本,如果出现问题,请告诉我们。
标签: vbscript windows-7 windows-10