【发布时间】:2016-04-09 09:27:13
【问题描述】:
在工作中,我们收到越来越多的关于事件日志高使用率的警报(主要在安全日志中)。 为了解决这个问题,我们编写了一个脚本来自动复制、压缩和清除事件日志,并将其添加为计划任务。
到目前为止一切都很好,并且在许多服务器上运行良好。
但是,当日志最大文件大小设置为 2097152 kB 或更大时,该函数会返回一个负值(很可能是因为它超出范围,因为它以字节形式返回)。
提取失败的代码如下:
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate, (Backup, Security)}!\\" & strServer & "\root\cimv2")
For Each Item in oWMI.ExecQuery("SELECT * FROM Win32_NTEventLogFile WHERE LogFileName='Security'")
Report = Report & vbNewLine & " " & Item.LogFileName & " log" & vbNewLine & _
" Maximum size: " & (Item.MaxFileSize/1024) & " KB" & vbNewLine & _
" Current size: " & (Item.FileSize/1024) & " KB" & vbNewLine & _
" Usage percentage: " & _
Round(((Item.FileSize * 100) / Item.MaxFileSize),2) & vbewLine
是否有任何解决方法或任何方法来编辑代码以使其支持 2097152 kB 及以上的日志最大文件大小,还是 GetObject() 函数的限制?
【问题讨论】:
-
你为什么要把
FileSize乘以100?我的建议是将文件大小以 KB 为单位保存在一个变量中,然后对此进行各种计算。最后一个词也有错字(vbewLine)。 -
获取使用百分比,无论如何这不是问题,因为它有效。问题是 Item.FileSize 以字节为单位,当事件日志设置为 2097152 或更高时,它会得到一个负值。这就是一切都失败的地方
-
这就是为什么您应该转换为 KB 并对其进行计算,因为数字会更小。
标签: windows vbscript automation event-log windows-server