iis vbscript удаляют всю привязку сайта и замену списком новой привязки

Второе местоположение должно быть:

  location ~ \/build { 
          auth_basic off;
          proxy_pass http://hudson/;
  }       
1
задан 3 December 2011 в 00:12
2 ответа

после тонны одиноких исследований я надеюсь, что этот ответ действительно поможет другим сэкономить время.

не стесняйтесь комментировать, если у вас есть какие-либо вопросы, это некрасиво, и я уверен, что его можно было бы написать лучше, но для одной из задач он работает.

OPTION EXPLICIT
DIM CRLF, TAB, strServer, objWebService, objWebServerTMP, objWebServer, objWebServerRoot, strBindings, domain, domains, domainsMobile, domainsMobileCC, oIIS, oBindingNew, oSite, ArrayOfValues, MobileSiteName
TAB  = CHR( 9 )
CRLF = CHR( 13 ) & CHR( 10 )
IF WScript.Arguments.Length = 1 THEN
    strServer = WScript.Arguments( 0 )
ELSE
    strServer = "localhost"
END IF
SET objWebService = GetObject( "IIS://" & strServer & "/W3SVC" )
EnumWebsites objWebService

SUB EnumWebsites( objWebService )

    FOR EACH objWebServer IN objWebService

            IF objWebserver.Class = "IIsWebServer" THEN
            '**************************************************
            IF objWebserver.ServerComment = "SiteName" 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
                            ' Output current bindings
                            WScript.Echo "IP Address" & TAB & _
                                                     "Port" & TAB & _
                                                     "Host" & CRLF & _
                                                     strBindings
                    END IF

                    ' Reset Bindings for this domain
                    objWebserver.Put "ServerBindings", ""
            objWebserver.SetInfo
                    '**************************************************
                    domainsM="www.test1.com,www.test2.com"
                    ArrayOfValues = Split(domainsM,",")
                    '**************************************************
                    'For i = 0 To Ubound(ArrayOfValues)
                    '       WScript.Echo ArrayOfValues(i)
                    'NEXT

                    Dim x
                    For x = 0 To Ubound(ArrayOfValues)

                        domain=ArrayOfValues(x)
                        Set oIIS = GetObject("winmgmts:root\WebAdministration")
                        Set oBindingNew = oIIS.Get("BindingElement").SpawnInstance_            
                        oBindingNew.BindingInformation = "*:80:" & domain            
                        oBindingNew.Protocol = "http"  
                        '**************************************************
                        Set oSite = oIIS.Get("Site.Name='SiteName'")
                        '**************************************************
                        oSite.Bindings= array(oBindingNew)
                        oSite.put_

                    NEXT

            END IF
            END IF                  
    NEXT
        FOR EACH objWebServerTMP IN objWebService
            IF objWebServerTMP.Class = "IIsWebServer" THEN
            '**************************************************
            IF objWebServerTMP.ServerComment = "SiteName" THEN
            '**************************************************
                    ' Enumerate the HTTP bindings (ServerBindings) and
                    ' SSL bindings (SecureBindings)
                    strBindings = EnumBindings( objWebServerTMP.ServerBindings ) & _
                                                EnumBindings( objWebServerTMP.SecureBindings )
                    IF NOT strBindings = "" THEN
                            ' Output current bindings
                            WScript.Echo "IP Address" & TAB & _
                                                     "Port" & TAB & _
                                                     "Host" & CRLF & _
                                                     strBindings
                    END IF
            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
0
ответ дан 4 December 2019 в 10:15

IIS8: Цикл, обновляющий привязки, каждый раз будет переопределяться и добавлять только последний в списке предоставленных доменов. Еще одна мысль, которую следует учитывать, IIS требует, чтобы каждая привязка была уникальной. Итак, вместо цикла вы можете просто

objWebserver.Put "ServerBindings", ArrayOfValues

objWebserver.SetInfo

Он добавит все предоставленные заголовки хоста

0
ответ дан 4 December 2019 в 10:15

Теги

Похожие вопросы