我正在使用iis win2k3。 我如何去提取一个adhoc网站列表,显示主机头的值,描述和网页文件夹的位置?
导出列表只显示标题和描述值。
更新 – 马特提供的答案,我已经更新了代码吐出一个文件。 希望这有助于某人
OPTION EXPLICIT DIM CRLF, TAB DIM strServer DIM objWebService TAB = CHR( 9 ) CRLF = CHR( 13 ) & CHR( 10 ) IF WScript.Arguments.Length = 1 THEN strServer = WScript.Arguments( 0 ) ELSE strServer = "localhost" END IF WScript.Echo "Enumerating websites on " & strServer & CRLF SET objWebService = GetObject( "IIS://" & strServer & "/W3SVC" ) EnumWebsites objWebService SUB EnumWebsites( objWebService ) DIM objWebServer, objWebServerRoot, strBindings DIM myFSO DIM WriteStuff DIM tmp Set myFSO = CreateObject("Scripting.FileSystemObject") Set WriteStuff = myFSO.OpenTextFile("siteList.txt", 8, True) tmp = "Site ID|Comment|State|Path|LogDir" WriteStuff.WriteLine(tmp) FOR EACH objWebServer IN objWebService IF objWebserver.Class = "IIsWebServer" THEN SET objWebServerRoot = GetObject(objWebServer.adspath & "/root") tmp = objWebserver.Name & "|" & _ objWebServer.ServerComment & "|" & _ State2Desc( objWebserver.ServerState ) & "|" & _ objWebServerRoot.path & "|" & _ objWebServer.LogFileDirectory & _ "" WriteStuff.WriteLine(tmp) ' Enumerate the HTTP bindings (ServerBindings) and ' SSL bindings (SecureBindings) END IF NEXT END SUB FUNCTION State2Desc( nState ) SELECT CASE nState CASE 1 State2Desc = "Starting (MD_SERVER_STATE_STARTING)" CASE 2 State2Desc = "Started (MD_SERVER_STATE_STARTED)" CASE 3 State2Desc = "Stopping (MD_SERVER_STATE_STOPPING)" CASE 4 State2Desc = "Stopped (MD_SERVER_STATE_STOPPED)" CASE 5 State2Desc = "Pausing (MD_SERVER_STATE_PAUSING)" CASE 6 State2Desc = "Paused (MD_SERVER_STATE_PAUSED)" CASE 7 State2Desc = "Continuing (MD_SERVER_STATE_CONTINUING)" CASE ELSE State2Desc = "Unknown state" END SELECT END FUNCTION
下面的VBScript将做到这一点:
OPTION EXPLICIT DIM CRLF, TAB DIM strServer DIM objWebService TAB = CHR( 9 ) CRLF = CHR( 13 ) & CHR( 10 ) IF WScript.Arguments.Length = 1 THEN strServer = WScript.Arguments( 0 ) ELSE strServer = "localhost" END IF WScript.Echo "Enumerating websites on " & strServer & CRLF SET objWebService = GetObject( "IIS://" & strServer & "/W3SVC" ) EnumWebsites objWebService SUB EnumWebsites( objWebService ) DIM objWebServer, objWebServerRoot, strBindings FOR EACH objWebServer IN objWebService IF objWebserver.Class = "IIsWebServer" THEN SET objWebServerRoot = GetObject(objWebServer.adspath & "/root") WScript.Echo _ "Site ID = " & objWebserver.Name & CRLF & _ "Comment = """ & objWebServer.ServerComment & """ " & CRLF & _ "State = " & State2Desc( objWebserver.ServerState ) & CRLF & _ "Path = " & objWebServerRoot.path & CRLF & _ "LogDir = " & objWebServer.LogFileDirectory & _ "" ' Enumerate the HTTP bindings (ServerBindings) and ' SSL bindings (SecureBindings) strBindings = EnumBindings( objWebServer.ServerBindings ) & _ EnumBindings( objWebServer.SecureBindings ) IF NOT strBindings = "" THEN WScript.Echo "IP Address" & TAB & _ "Port" & TAB & _ "Host" & CRLF & _ strBindings END IF END IF NEXT 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 ) ' objBindingList( i ) is a string looking like IP:Port:Host SET reMatches = reBinding.Execute( objBindingList( i ) ) FOR EACH reMatch IN reMatches strIP = reMatch.SubMatches( 0 ) strPort = reMatch.SubMatches( 1 ) strHost = reMatch.SubMatches( 2 ) ' Do some pretty processing IF strIP = "" THEN strIP = "All Unassigned" IF strHost = "" THEN strHost = "*" IF LEN( strIP ) < 8 THEN strIP = strIP & TAB EnumBindings = EnumBindings & _ strIP & TAB & _ strPort & TAB & _ strHost & TAB & _ "" NEXT EnumBindings = EnumBindings & CRLF NEXT END FUNCTION FUNCTION State2Desc( nState ) SELECT CASE nState CASE 1 State2Desc = "Starting (MD_SERVER_STATE_STARTING)" CASE 2 State2Desc = "Started (MD_SERVER_STATE_STARTED)" CASE 3 State2Desc = "Stopping (MD_SERVER_STATE_STOPPING)" CASE 4 State2Desc = "Stopped (MD_SERVER_STATE_STOPPED)" CASE 5 State2Desc = "Pausing (MD_SERVER_STATE_PAUSING)" CASE 6 State2Desc = "Paused (MD_SERVER_STATE_PAUSED)" CASE 7 State2Desc = "Continuing (MD_SERVER_STATE_CONTINUING)" CASE ELSE State2Desc = "Unknown state" END SELECT END FUNCTION
这是从这里拿走,我修改它添加path: http : //blogs.msdn.com/david.wang/archive/2005/07/13/HOWTO_Enumerate_IIS_Website_Configuration.aspx
这里是更新的代码,添加一个逗号分隔的主机头文件和安全的主机头文件输出(所以现在是:
站点ID |注释|状态|path| LogDir |主机头| SecHostHeaders
OPTION EXPLICIT DIM CRLF, TAB DIM strServer DIM objWebService TAB = CHR( 9 ) CRLF = CHR( 13 ) & CHR( 10 ) IF WScript.Arguments.Length = 1 THEN strServer = WScript.Arguments( 0 ) ELSE strServer = "localhost" END IF WScript.Echo "Enumerating websites on " & strServer & CRLF SET objWebService = GetObject( "IIS://" & strServer & "/W3SVC" ) EnumWebsites objWebService SUB EnumWebsites( objWebService ) DIM objWebServer, objWebServerRoot, strBindings DIM myFSO DIM WriteStuff DIM tmp Set myFSO = CreateObject("Scripting.FileSystemObject") Set WriteStuff = myFSO.OpenTextFile("siteList.txt", 8, True) tmp = "Site ID|Comment|State|Path|LogDir|HostHeaders|SecHostHeaders" WriteStuff.WriteLine(tmp) FOR EACH objWebServer IN objWebService IF objWebserver.Class = "IIsWebServer" THEN SET objWebServerRoot = GetObject(objWebServer.adspath & "/root") tmp = objWebserver.Name & "|" & _ objWebServer.ServerComment & "|" & _ State2Desc( objWebserver.ServerState ) & "|" & _ objWebServerRoot.path & "|" & _ objWebServer.LogFileDirectory & "|" & _ EnumBindings(objWebServer.ServerBindings) & "|" & _ EnumBindings(objWebServer.SecureBindings) & "|" & _ "" WriteStuff.WriteLine(tmp) END IF NEXT END SUB FUNCTION EnumBindings( objBindingList ) DIM i, strIP, strPort, strHost DIM reBinding, reMatch, reMatches SET reBinding = NEW RegExp reBinding.Pattern = "([^:]*):([^:]*):(.*)" EnumBindings = "" FOR i = LBOUND( objBindingList ) TO UBOUND( objBindingList ) ' objBindingList( i ) is a string looking like IP:Port:Host SET reMatches = reBinding.Execute( objBindingList( i ) ) FOR EACH reMatch IN reMatches strIP = reMatch.SubMatches( 0 ) strPort = reMatch.SubMatches( 1 ) strHost = reMatch.SubMatches( 2 ) ' Do some pretty processing IF strIP = "" THEN strIP = "All Unassigned" IF strHost = "" THEN strHost = "*" IF LEN( strIP ) < 8 THEN strIP = strIP & TAB EnumBindings = EnumBindings & strHost & "," & "" NEXT NEXT if len(EnumBindings) > 0 Then EnumBindings = Left(EnumBindings,Len(EnumBindings)-1) END FUNCTION FUNCTION State2Desc( nState ) SELECT CASE nState CASE 1 State2Desc = "Starting (MD_SERVER_STATE_STARTING)" CASE 2 State2Desc = "Started (MD_SERVER_STATE_STARTED)" CASE 3 State2Desc = "Stopping (MD_SERVER_STATE_STOPPING)" CASE 4 State2Desc = "Stopped (MD_SERVER_STATE_STOPPED)" CASE 5 State2Desc = "Pausing (MD_SERVER_STATE_PAUSING)" CASE 6 State2Desc = "Paused (MD_SERVER_STATE_PAUSED)" CASE 7 State2Desc = "Continuing (MD_SERVER_STATE_CONTINUING)" CASE ELSE State2Desc = "Unknown state" END SELECT END FUNCTION