web-dev-qa-db-ja.com

IIS6 / IIS7:Webサイトのログへの物理パスを取得する方法は?

2つの質問があります:

  1. サーバー上のすべてのWebWebサイトのリストを取得する方法
  2. 各Webサイトのログフォルダーのリストを取得する方法(例:C:\ WINDOWS\system32\LogFiles\W3SVC1141336521)

特別なコンソールコマンドはありますか?

4
Maxim

私はこれを使用しましたVB script on IIS 6. IIS/WMIをインストールすると、IIS 7で動作するはずです。 Windows Server2008の場合。

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
1
splattne

iIS6までは、 AdsUtil.vbs で必要な情報を取得できるはずです。

IIS7 と互換性を持たせる方法はいくつかありますが、長期的に正しい方法ではありません。

0
Nick Kavadias