嘿伙计们我正在尝试轻松获取网络机器的累积正常运行时间数据。
基本上我们需要保存到文件中的正常运行时间总和,所以在季度结束时我们可以报告这个。
我可以轻松地在运行脚本时获得正常运行时间,但不确定如何使用每天节省机器正常运行时间的时间,以便我可以向其报告。
感谢任何帮助。
答案 0 :(得分:0)
如果您想通过计算机本身监控的正常运行时间来执行此操作,则需要(或多或少)持续更新日志,因为计数器在系统崩溃或重新启动后会重置,您将失去正常运行时间之间的正常运行时间信息。上次日志写入和崩溃/重启。更好的方法是实施系统监控解决方案(Nagios,Zabbix,WhatsUp,SCOM,......)。这些工具可以持续跟踪系统的正常运行时间,并且已经提供了可以使用的报告。
如果您仍想使用“本地脚本”路线,则每隔5分钟运行以下内容作为计划任务可能有效:
Set fso = CreateObject("Scripting.FileSystemObject")
Set wmi = GetObject("winmgmts://./root/cimv2")
Set re = New RegExp
logfile = "C:\path\to\uptime.log"
uptimes = fso.OpenTextFile(logfile, 1, True).ReadAll
'extract last uptime from log
re.Pattern = "(\d+)\s*$"
For m In re.Execute(uptimes)
lastUptime = CLng(m.SubMatches(0))
Next
'get current uptime
qry = "SELECT * FROM Win32_PerfFormattedData_PerfOS_System"
For Each v In wmi.ExecQuery(qry)
currentUptime = CLng(v.SystemUpTime)
Next
Set f = fso.OpenTextFile(logfile, 2)
If IsEmpty(lastUptime) Or lastUptime >= currentUptime Then
'append current uptime if the last uptime was greater or equal to than the
'current uptime (=> a crash or reboot occurred) or no uptime was logged before
f.WriteLine uptimes & currentUptime
Else
'update last uptime otherwise
f.WriteLine re.Replace(uptimes, currentUptime)
End If
f.Close