IIS6/IIS7:如何获取网站日志的物理路径?

IIS6/IIS7:如何获取网站日志的物理路径?

我有两个问题:

  1. 如何获取服务器上所有网站的列表
  2. 如何获取每个网站的日志文件夹列表(例如:C:\WINDOWS\system32\LogFiles\W3SVC1141336521)

有特殊的控制台命令吗?

答案1

我已经在 IIS 6 上使用了这个 VB 脚本。如果您在 Windows Server 2008 上安装 IIS/WMI,它应该可以在 IIS 7 上运行。

将其保存为 EnumerateWebSites.vbs 并在命令行上运行它。

Option Explicit

Dim ServerName
Dim fso, WriteStuff, OutputText
Dim ws, wmiService, colItemz, item, sPath
Dim CrLf, TabChar

TabChar = Chr(9)
CrLf = Chr(13) & Chr(10)

Set wmiService = GetObject("winmgmts:{authenticationLevel=pktPrivacy}\\.\root\microsoftiisv2")

If WScript.Arguments.Length = 1 Then
   ServerName = WScript.Arguments(0)
Else
   ServerName = "localhost"
End If

WScript.Echo "Enumerating websites on " & ServerName & CrLf
Set ws = GetObject( "IIS://" & ServerName & "/W3SVC" )
EnumWebsites ws

Sub EnumWebsites( ws )

    Dim webServer, bindings

    For Each webServer IN ws

        If webServer.Class = "IIsWebServer" Then

            Set colItemz = wmiService.ExecQuery("select * from IIsWebVirtualDirSetting where name = 'W3SVC/" & webServer.Name & "/root'")

            For Each item in colItemz
                sPath = item.Path
            Next

            WScript.Echo _
                "Site ID = " & webServer.Name & CrLf & _
                "Comment = """ & webServer.ServerComment & """ " & CrLf & _
                "State = " & StateTranslation( webServer.ServerState ) & CrLf & _
                "LogDir = " & webServer.LogFileDirectory & CrLf & _
                "Path = " & sPath & _
            ""

            OutputText = OutputText & CrLf & "Site ID = " & webServer.Name & CrLf & _
                "Comment = """ & webServer.ServerComment & """ " & CrLf & _
                "State = " & StateTranslation( webServer.ServerState ) & CrLf & _
                "LogDir = " & webServer.LogFileDirectory & CrLf & _
                "Path = " & sPath & _
                ""

            bindings = EnumBindings(webServer.ServerBindings) & _
            EnumBindings( webServer.SecureBindings )

            If Not bindings = "" THEN
                WScript.Echo "IP Address" & TabChar & _
                "Port" & TabChar & _
                "Host" & CrLf & _
                bindings

                OutputText = OutputText & CrLf & "IP Address" & TabChar & _
                "Port" & TabChar & _
                "Host" & CrLf & _
                bindings
            End If
        End If
    NEXT

    FileWriter OutputText

End Sub


Sub FileWriter(WriteText)

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set WriteStuff = fso.OpenTextFile("OneOff.txt", 8, True)
    WriteStuff.WriteLine(WriteText)
    WriteStuff.Close

    Set WriteStuff = nothing
    Set fso = nothing

End Sub


Function EnumBindings( objBindingList )

    Dim i, strIP, strPort, strHost
    Dim reBinding, reMatch, reMatches
    Set reBinding = NEW RegExp
    reBinding.Pattern = "([^:]*):([^:]*):(.*)"

    For i = LBOUND( objBindingList ) TO UBOUND( objBindingList )

        Set reMatches = reBinding.Execute( objBindingList( i ) )
        For Each reMatch In reMatches
            strIP = reMatch.SubMatches( 0 )
            strPort = reMatch.SubMatches( 1 )
            strHost = reMatch.SubMatches( 2 )

            If strIP = "" Then strIP = "All Unassigned"
            If strHost = "" Then strHost = "*"
            If LEN( strIP ) < 8 Then strIP = strIP & TabChar

            EnumBindings = EnumBindings & _
            strIP & TabChar & _
            strPort & TabChar & _
            strHost & TabChar & _
            ""
        Next

        EnumBindings = EnumBindings & CrLf
    Next

End Function

Function StateTranslation(StatusID)
    Select Case StatusID
        Case 1
            StateTranslation = "Starting"
        Case 2
            StateTranslation = "Started"
        Case 3
            StateTranslation = "Stopping "
        Case 4
            StateTranslation = "Stopped"
        Case 5
            StateTranslation = "Pausing"
        Case 6
            StateTranslation = "Paused"
        Case 7
            StateTranslation = "Continuing"
        Case ELSE
            StateTranslation = "Unknown state"
    End Select
End Function

答案2

对于 IIS6 以上版本,你应该能够使用以下命令获取所需的信息广告实用程序

有办法让它兼容微软 IIS7但从长远来看,这不是正确的做事方式。

相关内容