帮你转换下简体,要不看着太费眼了
--------------------------------------------------------
WINDOWS Eventlog每日备份Scripts脚本
前言:
在管理windows平台的服务器时,常常在系统发生问题或是服务器上运行的服务发生异常时,我们第一个一定是先打开"事件检查器"来查看Eventlog,查看是不是有异常的讯息产生,但是windows的log产生默认下是不会以日期来自动备份的,往往要找一个问题都要在一堆log里翻呀找呀,好不方便,如果能够每天在午夜12点59分整以全文字档备份每天的eventlog,那我们就可以在问题发生时,把我们要查找的eventlog以照日期调阅出来,方便又快速~以下小弟我就写了一个很小但又方便的dos scripts提供给大家参考罗!
一.实作:
首先scripts的组成有以下三个档案
1.Dump_eventlog.cmd -->这支Scripts是把eventlog Dump出来共以全文字档 txt来存档
2.dumpel.exe -->这是一支工具程式,因为如果用windows内建的汇出eventlog功能,汇出来的後缀档名是.evt,以文字编程工具打开来会是乱码,一定要用windows的事件检查器打来看才行,那就太烦人了,所以我们用这支程式加上上一支scripts就可以汇出後缀档名为.txt的log档,要查看就方便多了!
3.del_eventlog.vbs -->这支是用wsh编程编写的scripts,功用是清空系统的eventlog记录,有人要问了,我们不是要备份log吗为什麽需要这支来删除呀!
还记得刚才说的吗?我们是要备份每天的系统Log档,所以用排程排定在每天的午夜12:59备份系统Log後,就利用这支scripts清空系统里旧的log,那样我们每天备份的eventlog就会是完完整整的一整天,而不是好几天混杂在一起的log备份!
二.代码说明
接下来我就要解说代源的写法罗
1.Dump_eventlog.cmd
---------------------------------- 源代码 ------------------------------------------------------------
@echo Off
mkdir %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%
@echo ******* start Backup Eventlog ******
dumpel -s 127.0.0.1 -l system -f %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%/system.log
dumpel -s 127.0.0.1 -l application -f %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%/application.log
dumpel -s 127.0.0.1 -l security -f %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%/security.log
@echo ******* Finish Backup Eventlog ******
star /min del_eventlog.vbs
---------------------------------------------------------------------------------------------------------
说明:
代码不含上下二条虚线喔!第二行是我们要建立一个以日期为名称的资料夹
因为windows的date抓取的日期变数会是2005/02/23 星期三"这样的文字,其内的斜线(/)或减号(-)都是用做命令列的选项符号,这样的组合可能会造成错误。
在此最简单的方法便是用环境变数的扩充功能了,用%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%,我们就可以抓取以2006-10-20这种格式的日期,4~6行则是利用dumpel 这支程式把 security 、application 、system 三项log记录汇出来以txt档备份到以当天日期命名的资料夹里,ip我是用本机,请依照自己的需要改成你自己主机的ip,star /min del_eventlog.vbs这行则是在备份完之後清空系统的log记录,原因,前面我们己经说过了!把上面的源码copy并存成.bat或.cmd的档名就可以了!
2.del_eventlog.vbs
-------------------------------------源代码-----------------------------------------------------------
'删除Evenlog
strComputer= "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!\\" & _
strComputer & "\root\cimv2")
dim mylogs(3)
mylogs(1)="application"
mylogs(2)="system"
mylogs(3)="security"
for Each logs in mylogs
Set colLogFiles=objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='"&logs&"'")
For Each objLogfile in colLogFiles
objLogFile.ClearEventLog()
Next
Next
---------------------------------------------------------------------------------------------------------
说明:
代码不包含上下二条虚线喔!这支是清空系统eventlog的wsh编程 scripts,这里就不多做介绍了,有兴趣可以到微软的脚本范例网站看看,上面有对wsh的做很多的介绍也有范例档可下来研究!
http://www.microsoft.com/china/technet/community/scriptcenter/default.mspx
以上三支scripts我有提供我写好的码代码在附件里,大家可以玩看看,欢迎修改,
eventlog的备份也许有些人觉得没什麽重要,但以笔者我,在管理大量主机时,尤其我又是管理线上游戏服务器,对於系统异常状况的掌控就是非常重要的了~
小田仔 2006/10/20
------------------------------------------------
Last edited by boiu on 2006-10-21 at 07:19 ]