发个很早前自己写的iis6的删除日志的vbs脚本
写这个东西的原因是网上的删除iis日志工具要么报毒(懒得做免杀),要么太暴力(直接关掉IIS服务再将日志文件整个删除,坑爹呢!?)
后来找了下资料发现其实要删除iis6的日志没必要把iis服务停掉,只需要把日志记录的选项关掉就行了
在参考了Adsutil.vbs里面的部分代码后写了个vbs,专门用来删除iis6的日志,不用停掉iis的服务,删除时使用正则表达式匹配关键字,而且删除后再将日志文件修改时间改回原来的时间
![](https://i-blog.csdnimg.cn/blog_migrate/1464520573cdac731351ef79604df204.png)
第一条列出当前IIS上面站点的详细信息:站点ID号,站点物理路径,站点的日志路径
第二条命令和第三条命令是暂停和开启指定站点的日志记录的,一般用不到。第四条命令里面已经包含这两条命令
第四条是指定站点ID号,要删除的日志文件绝对路径,要删除的日志的关键字(这里关键字使用正则表达式匹配)
一般使用第一条和第四条命令结合即可
![](https://i-blog.csdnimg.cn/blog_migrate/1b796404c37d524ef0644ad228444f1f.jpeg)
要删除IP地址是172.16.1.5在12年12月12号的访问记录:
![](https://i-blog.csdnimg.cn/blog_migrate/4ac9fc7b6dd5118229730feafa07ef4b.png)
具体代码如下:
001 | If WScript.Arguments.Count < 1 Then |
006 | Select Case UCase(WScript.Arguments.Item(0)) |
010 | Call SetLog(WScript.Arguments.Item(1),0) |
012 | Call SetLog(WScript.Arguments.Item(1),1) |
014 | Call DelLog(WScript.Arguments.Item(1),WScript.Arguments.Item(2),WScript.Arguments.Item(3)) |
020 | WScript.Echo "IIS 6 Log Deleter By. Twi1ight" & vbCrLf |
021 | WScript.Echo "Usage:" & vbTab & _ |
022 | WScript.ScriptName & " LIST" & vbCrLf & vbTab & _ |
023 | WScript.ScriptName & " STARTLOG SiteID" & vbCrLf & vbTab & _ |
024 | WScript.ScriptName & " STOPLOG SiteID" & vbCrLf & vbTab & _ |
025 | WScript.ScriptName & " DELLOG SiteID LogFile KeyString" & vbCrLf & " " & _ |
026 | "LIST" & vbTab & vbTab & "List all websites info" & vbCrLf & " " & _ |
027 | "STARTLOG" & vbTab & "Start IIS Logging on SiteID" & vbCrLf & " " & _ |
028 | "STOPLOG" & vbTab & "Stop IIS Logging on SiteID" & vbCrLf & " " & _ |
029 | "DELLOG" & vbTab & "Automatical stop/start IIS log and delete log items which contains KeyString, KeyString is a Regular String" |
034 | If Not IsNumeric(ID) Then |
035 | WScript.Echo "[-] The site ID specified is not Numeric" |
041 | Set ObjService=GetObject( "IIS://LocalHost/W3SVC" ) |
042 | For Each obj3w In objservice |
043 | If IsNumeric(obj3w.Name) Then |
044 | sServerName=Obj3w.ServerComment |
045 | Set webSite = GetObject( "IIS://Localhost/W3SVC/" & obj3w.Name & "/Root" ) |
046 | ListAllWeb = ListAllWeb & obj3w.Name & _ |
047 | String (Abs(25-Len(obj3w.Name)), " " ) & _ |
048 | obj3w.ServerComment & "(" & webSite.Path & ")" & vbCrLf |
049 | Set objLog = GetObject( "IIS://Localhost/W3SVC/" & obj3w.Name) |
050 | ListAllWeb = ListAllWeb & String (25, " " ) & _ |
051 | "Log: " & objLog.LogFileDirectory & "\W3SVC" & obj3w.Name &vbCrLf |
054 | WScript.Echo ListAllWeb |
055 | Set ObjService= Nothing |
064 | Set objSite = GetObject( "IIS://localhost/W3SVC/" & ID) |
065 | objSite.Put "LogType" ,value |
067 | If (Err.Number <> 0) Then |
069 | WScript.Echo "[-] Error Trying To " & str & " IIS Logging!" |
071 | WScript.Echo str & " IIS Logging Success!" |
076 | Sub DelLog(ID, LogFile, KeyString) |
078 | Const ForReading = 1, ForWriting = 2, ForAppending = 8 |
083 | Set regEx = New RegExp |
084 | regEx.Pattern = KeyString |
085 | regEx.IgnoreCase = True |
087 | Set fso = CreateObject( "Scripting.FileSystemObject" ) |
089 | Set f = fso.GetFile(LogFile) |
090 | modifyDate = f.DateLastModified |
093 | LogPath = fso.GetParentFolderName(LogFile) |
094 | LogName = fso.GetFileName(LogFile) |
095 | TempFile = fso.GetTempName |
096 | SrcFile = LogPath & "\" & TempFile |
099 | Call fso.CopyFile(LogFile, SrcFile) |
100 | Set srcLog = fso.OpenTextFile(SrcFile, ForReading, False ) |
101 | Set dstLog = fso.OpenTextFile(LogFile, ForWriting, False ) |
102 | Do While srcLog.AtEndOfLine <> True |
103 | line = srcLog.ReadLine |
104 | Set Martches = regEx.Execute(line) |
105 | If Martches.Count <> 0 Then |
106 | WScript.Echo " " & line |
108 | dstLog.WriteLine(line) |
113 | fso.DeleteFile(SrcFile) |
115 | Set objShell = CreateObject( "Shell.Application" ) |
116 | Set objFolder = objShell.NameSpace(LogPath) |
117 | Set objFolderItem = objFolder.ParseName(LogName) |
118 | objFolderItem.ModifyDate = modifyDate |
120 | If (Err.Number <> 0) Then |
121 | WScript.Echo "[-] Error Trying To Delete IIS Log!" |
这个脚本只能用于IIS6,IIS7由于重新设计过,所以完全不同了,这里也求大牛公布怎么删除iis7的日志
还有我听说3389日志可以单条删除,不知有哪位基友有此神器么?