用于清理 IIS 日志的 VBscript 存在运行时错误
VBscript for cleaning up IIS logs has runtime error
我有一个用于压缩旧 IIS 日志文件的 VBScript。不过我一直收到这个错误:
Microsoft VBScript runtime error: ActiveX component can't create
object: 'GetObject'
这是它出错的行:
Set objIISOuter = GetObject("IIS://LOCALHOST")
我不确定这意味着什么。
尝试了我发现的 here 但我无法获得任何 运行 32 或 64 位。
我在某处读到,未注册 DLL 可能是个问题,但我不知道这怎么会是这里的问题,虽然可能是错误的。
For Each objWebOuter in objIISOuter
If LCase(objWebOuter.Class) = "iiswebservice" Then
Set objIIS = GetObject("IIS://LOCALHOST/W3SVC")
For Each objWeb in objIIS
If LCase(objWeb.Class) = "iiswebserver" Then
Call DeleteLogFiles( _
objWeb.LogFileDirectory & "\W3SVC" & objWeb.Name, _
intZipAge, intDelAge)
End If
我是管理员,所以权限不是问题。有什么想法吗?
这里有两种可能的方法:
使用 FileSystemObject 获取 LogFiles 文件夹并删除文件:
sLogFolder = "%SystemDrive%\inetpub\logs\LogFiles"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sLogFolder)
For Each objSubfolder In objFolder.SubFolders
DeleteFiles objSubfolder.Path, 10
Next
另一种方法:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objIIS = GetObject("winmgmts:root\WebAdministration")
Set objSites = objIIS.InstancesOf("Site")
For Each objSite In objSites
DeleteFiles objSite.LogFile.Directory & "\w3svc\" & objSite.ID, 10
Next
这两种方法都使用以下 Sub 从文件夹中删除文件:
Sub DeleteFiles(p_sFolder, p_iMaxAge)
Dim objFSO
Dim objFolder
Dim objFile
Dim iFileAge
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(p_sFolder)
If objFolder Is Nothing Then Exit Sub
For Each objFile In objFolder.Files
iFileAge = Now - objFile.DateCreated
If iFileAge > (p_iMaxAge) Then
objFSO.DeleteFile objFile, True
End If
Next
End Sub
我有一个用于压缩旧 IIS 日志文件的 VBScript。不过我一直收到这个错误:
Microsoft VBScript runtime error: ActiveX component can't create object: 'GetObject'
这是它出错的行:
Set objIISOuter = GetObject("IIS://LOCALHOST")
我不确定这意味着什么。
尝试了我发现的 here 但我无法获得任何 运行 32 或 64 位。
我在某处读到,未注册 DLL 可能是个问题,但我不知道这怎么会是这里的问题,虽然可能是错误的。
For Each objWebOuter in objIISOuter
If LCase(objWebOuter.Class) = "iiswebservice" Then
Set objIIS = GetObject("IIS://LOCALHOST/W3SVC")
For Each objWeb in objIIS
If LCase(objWeb.Class) = "iiswebserver" Then
Call DeleteLogFiles( _
objWeb.LogFileDirectory & "\W3SVC" & objWeb.Name, _
intZipAge, intDelAge)
End If
我是管理员,所以权限不是问题。有什么想法吗?
这里有两种可能的方法:
使用 FileSystemObject 获取 LogFiles 文件夹并删除文件:
sLogFolder = "%SystemDrive%\inetpub\logs\LogFiles"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sLogFolder)
For Each objSubfolder In objFolder.SubFolders
DeleteFiles objSubfolder.Path, 10
Next
另一种方法:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objIIS = GetObject("winmgmts:root\WebAdministration")
Set objSites = objIIS.InstancesOf("Site")
For Each objSite In objSites
DeleteFiles objSite.LogFile.Directory & "\w3svc\" & objSite.ID, 10
Next
这两种方法都使用以下 Sub 从文件夹中删除文件:
Sub DeleteFiles(p_sFolder, p_iMaxAge)
Dim objFSO
Dim objFolder
Dim objFile
Dim iFileAge
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(p_sFolder)
If objFolder Is Nothing Then Exit Sub
For Each objFile In objFolder.Files
iFileAge = Now - objFile.DateCreated
If iFileAge > (p_iMaxAge) Then
objFSO.DeleteFile objFile, True
End If
Next
End Sub