用于清理IIS日志的VBscript出现运行时错误

用于清理IIS日志的VBscript出现运行时错误,iis,vbscript,runtime-error,iis-logs,Iis,Vbscript,Runtime Error,Iis Logs,我有一个用于压缩旧IIS日志文件的VBScript。不过,我一直会遇到这样的错误: Microsoft VBScript运行时错误:ActiveX组件无法创建 对象:“GetObject” 这是it错误所在的行: Set-objIISOuter=GetObject(“IIS://LOCALHOST”) 我不确定这意味着什么 尝试了我发现的东西,但我无法运行任何32或64位的东西 我在某个地方读到,DLL没有注册可能会有问题,但我不知道这怎么会是一个问题,尽管可能是错误的 For Each obj

我有一个用于压缩旧IIS日志文件的VBScript。不过,我一直会遇到这样的错误:

Microsoft VBScript运行时错误:ActiveX组件无法创建 对象:“GetObject”

这是it错误所在的行:

Set-objIISOuter=GetObject(“IIS://LOCALHOST”)

我不确定这意味着什么

尝试了我发现的东西,但我无法运行任何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获取日志文件文件夹并删除文件:

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 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://LOCALHOST”
不是ActiveX组件,如错误所述。您想用
objIISOuter
对象做什么?您应该切换到PowerShell。如果坚持使用VBScript,则必须在IIS安装中启用IIS 6兼容性,否则它将无法工作。@ÉtienneLaneville我正在尝试获取日志文件以将其压缩。编辑应该解释更多正在发生的事情on@LexLi我认为IIS 6兼容性已启用。是的,我更愿意在powershell中执行此操作,但如果我可以修复此脚本,我认为这将更可取。在我看来,您可以直接使用“%SystemDrive%\inetpub\logs\LogFiles”路径作为日志文件夹路径,然后您可以使用
脚本编写.FileSystemObject
删除该文件夹。您可以参考更多详细信息。有趣的是,
IIS://LocalHost
路径不起作用有什么原因吗?而
%SystemDrive%\inetpub\logs\LogFiles
会吗?两者不应该是同一件事吗?我不熟悉使用
GetObject(“IIS://LOCALHOST/W3SVC”)
-这会返回什么因此,我提出了一种我理解并且也应该有效的方法。