vbs和js本身不提供察看日志的方法,但wscript.shell具有run方法,即可以运行windows命令,所以我们要借助上面说的dumpel工具,首先说一下它的使用方法,
dumpel -f file [-s \\\\server] [-l log [-m source]] [-e n1 n2 n3...] [-r] [-t] [-d x]常用的参数:-f file 即为日志的存储位置和文件名-s server 在查看远程日志时使用(必须有admin权限)-m 过滤日志条件-l 指定日志,如系统日志(system),应用程序(application),安全日志(security),域控制器还有dns,文件复制等
例如,要把server01上安全日志保存为security.log,命令:dumpel -f security.log -s \\\\server01 -l security然后即产生一个security.log的文本文档,为了得到格式化输出的日志文件,我们采取下面的编程方法:
假设我们要查看日志的服务器为\\\\server, 存储位置为\\\\data\\backup,文件名为 "计算机名 日期 日志类型".html并通过计划任务,一天产生一个html文档,原代码如下:
logreport.js
month=new Array(12)month[1]="一月"month[2]="二月"month[3]="三月"month[4]="四月"month[5]="五月"month[6]="六月"month[7]="七月"month[8]="八月"month[9]="九月"month[10]="十月"month[11]="十一月"month[12]="十二月"
days=new Array(7)days[1]="星期日"days[2]="星期一"days[3]="星期二"days[4]="星期三"days[5]="星期四"days[6]="星期五"days[7]="星期六"function theData(aDate){var currentday=days[aDate.getDay() 1]var currentmonth=month[aDate.getMonth() 1]return currentday "," currentmonth "," aDate.getDate()}var result;result=0var ws=WScript.CreateObject("WScript.shell")c=ws.expandenvironmentstrings("%computername%")netdrive="\\\\date\\backup"
today=new Date()var logday=today.getDate()var logmonth=today.getMonth()
logarray=new Array(2)logarray[0]="system"logarray[1]="application"logarray[2]="security"for (l in logarray) {ws.run("dumpel.exe /s \\\\server /l " logarray[l] " /f " netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".log /d 1",0,"TRUE")}ForReading=1ForAppending=8
for (l in logarray) {
var fs=new ActiveXObject("scripting.FileSystemObject")var f=fs.opentextfile("" netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".log",ForReading,"TRUE")fContents=f.ReadAll()f.Close()
var f=fs.OpenTextFile("" netdrive "\\\\" c "-" logmonth "-" logday() "-" logarray[l] ".htm",ForAppending,"TRUE")fHeader="<html><head><title>Daily "fHeader =logarray[l]fHeader =cfHeader ="</title></head>"fHeader ="<body bgcolor=#ffffff text=#000000>"fHeader ="<h1>daily"fHeader =logarray[l]fHeader =" log report for "fHeader =cfHeader ="</h1>"fHeader ="<h3>"
fHeader =theData(today)
fHeader ="</h3>"fHeader ="<pre>"
f.Write(fHeader)f.Write(fContents)
fFooter="</pre></body></html>"
fWrite(fFooter)f.Close()}
将以上代码用记事本打开,并把后缀名存为js,并与dumpel.exe放在同一目录下,双击即可运行,运行后自动建立"计算机名 日期 日志类型".html
要使此脚本程序定期的进行日志备份,可以利用windows图形化的计划任务或是“at"命令。
利用图形化的计划任务使脚本自动执行非常简单,这里不再详细介绍,用at命令同样可以达到目的。例如需要在每天的0:00执行此脚本来备份系统日志,则在命令提示行下输入at \\\\server /every M,T,W,Th,F,S,Su 0:00 "path\\logreport.js"此处server为logreort.js所在的机器,本机可省略。path为logreport.js所在的路径,默认的为%systemroot%