zoukankan      html  css  js  c++  java
  • CScript

    用法:CScript scriptname.extension [option...] [arguments...]

    选项:
     //B         批模式:不显示脚本错误及提示信息
     //D         启用 Active Debugging
     //E:engine  使用执行脚本的引擎

    Option Explicit
    'On Error Resume Next

    Dim objShell,objArg,objInStream,objOutStream,intSiteIndex,objW3svc,ObjChildObject,strChildObjectName
    Dim objIIs,objIIsWeb,objFso,objBackupFile,arrServerBindings,strServerComment,strMaxConnections
    Dim strPath,strBackupFile,strFileLine,arrSiteInfo,intCreateWebStatus,strOldIP,strNewIP,intSiteCount
    Dim intBindsIndex,intBindsArrID,intChoice,strSearchMode,strSearchedSite,strSaveToBackup,strResult
    Dim strSaveFileName,strOverWrite,objResultFile,strIpString,intSearched,strDomainString,strPathString
    Dim strDeleteMode,intDeleteId,arrSiteId(999),strCommentString,intCountDeleteSite

    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8

    If (LCase(Right(Wscript.FullName , 11))="wscript.exe") Then
       Set objShell=Wscript.CreateObject("Wscript.Shell")
       objShell.Run("cmd.exe /k cscript //nologo "&chr(34)&Wscript.ScriptFullName&chr(34))
       Wscript.Quit
    End If

    Set objOutStream = Wscript.StdOut
    Set objInStream  = Wscript.StdIn

    Set objArg = Wscript.Arguments
    If objArg.Count <= 0 Then
    HELP()
    Wscript.Quit
    End If

    Select Case UCase(objArg(0))
    Case "BACKUP"
    HELP()
    BackupSite()
    Case "RESTORE"
    HELP()
    RestoreSite()
    Case "CHANGEIP"
    HELP()
    ChangeSiteIP()
    Case "CHANGE_APP"
    HELP()
    Change_AppIsolated()
    Case "SEARCH"
    HELP()
    Search()
    Case "DELETESITE"
    HELP()
    DeleteSite()
    End Select

    Function BackupSite() 
    '备份站点模块
        
    if objArg.Count <=1 then
            objOutStream.Write 
    "请输入用来备份站点信息的文件名:"
            strBackupFile 
    = objInStream.ReadLine
        end 
    if
        
    if objArg.Count =2 then
            strBackupFile 
    = objArg(1)
        end 
    if
        intSiteIndex 
    = 1 '站点ID的索引
        Wscript.Echo vbCrLf & "开始备份站点信息……" & vbCrLf
        
    '*********************************************
        Set objW3svc 
    = GetObject("IIS://localhost/w3svc"'建立IIS对象
        For Each objChildObject In objW3svc
            If (Err.Number <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) = True Then 
    '判断ObjChildObject.Name是不是数字
                Set objIIs 
    = objW3svc.GetObject("IIsWebServer", objChildObject.Name)
                If Err.Number 
    <> 0 Then
                    Exit For
                    Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                strServerComment  = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                strMaxConnections 
    = objIIs.MaxConnections '把IIS虚拟站点的最大连接数赋值给变量MaxConnections
                Set objIIsWeb = objIIs.GetObject("IIsWebVirtualDir","Root")
                strPath = objIIsWeb.Path
                Set objFso = CreateObject("Scripting.FileSystemObject")
                If (objFso.fileexists(strBackupFile)) Then
                    Set objBackupFile = objFso.OpenTextFile(strBackupFile,ForAppending,True)
                    objBackupFile.WriteLine(strServerComment  &vbTab & Join(arrServerBindings,",") & vbTab & strMaxConnections & vbTab & strPath)
                    objBackupFile.Close
                    Wscript.Echo "正在备份站点 " & strServerComment & "!"
                Else
                    Set objBackupFile = objFso.CreateTextFile(strBackupFile,True)
                    objBackupFile.WriteLine(strServerComment & vbTab & Join(arrServerBindings,",") & vbTab & strMaxConnections & vbTab & strPath)
                    objBackupFile.Close
                    Wscript.Echo "正在备份站点 " & strServerComment & "!"
                End If
            intSiteIndex = intSiteIndex + 1
            End If
        Next
        Wscript.Echo vbCrLf & "一共备份了 " & intSiteIndex - 1 & "个站点信息!" & vbCrLf
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
        Set objFso         = Nothing
        Set objBackupFile  = Nothing
    End Function

    Function RestoreSite() 
    '恢复站点模块
        
    if objArg.Count <=1 then
            objOutStream.Write 
    "请输入用来恢复站点信息的文件名:"
            strBackupFile 
    = objInStream.ReadLine
        end 
    if
        
    if objArg.Count =2 then
            strBackupFile 
    = objArg(1)
        end 
    if
        Wscript.Echo vbCrLf 
    & "开始恢复站点信息……" & vbCrLf
        Set objFso 
    = CreateObject("Scripting.FileSystemObject")
        If Not (objFso.fileexists(strBackupFile)) Then
        Wscrip.Echo 
    "没有找到文件 "&strBackupFile&"!"&vbCrLf&"请确定文件的位置!"
        Wscript.Quit
        End If
        Set objBackupFile 
    = objFso.OpenTextFile(strBackupFile,1)
        intSiteCount 
    = 1
        Do While objBackupFile.AtEndOfStream 
    <> True
            strFileLine 
    = objBackupFile.ReadLine
            arrSiteInfo 
    = split(strFileLine,vbTab)
            intCreateWebStatus 
    = CreateWebServer(arrSiteInfo(0),split(arrSiteInfo(1),","),arrSiteInfo(2),arrSiteInfo(3))
            If intCreateWebStatus 
    = 1 Then
                Wscript.Echo 
    "建立站点 " & arrSiteInfo(0& " 成功"
                intSiteCount 
    = intSiteCount + 1
            Else
                Wscript.Echo 
    "建立站点 " & arrSiteInfo(0& " 失败"
            End If
        Loop
        objBackupFile.Close
        Wscript.Echo vbCrLf 
    & "一共恢复了 " & intSiteCount - 1 & " 个站点信息!" & vbCrLf
        Set objBackupFile 
    = Nothing
        Set objFso        
    = Nothing
    End Function


    Function ChangeSiteIP() 
    '修改站点IP模块
        
    '*********************************************
        
    '获取两个IP,一个是原来的,是个是新的
        
    '*********************************************
        objOutStream.Write 
    "请输入站点原IP:"
        strOldIP 
    = objInStream.ReadLine
        objOutStream.Write 
    "请输入站点新IP:"
        strNewIP 
    = objInStream.ReadLine
        
    '*********************************************
        Wscript.Echo vbCrLf & "开始修改……" & vbCrLf
        Set objW3svc = GetObject("IIS://localhost/w3svc") 
    '建立IIS对象
        For Each objChildObject In objW3svc
            If (Err.Number 
    <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) 
    = True Then '判断objChildObject.Name是不是数字
                Set objIIs = objW3svc.GetObject("IIsWebServer", objChildObject.Name) 
    '建立IIS虚拟站点对像
                If Err.Number 
    <> 0 Then
                    Exit For
                    Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                strServerComment  = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                Wscript.Echo 
    "正在修改站点  " & strServerComment & "  的IP" '在命令行打印正在修改IP的站点名称
                intBindsIndex = UBound(arrServerBindings) + 1 
    '由于站点可以绑定多个域名、端口和IP,所以需要判断一共绑定了多少IP
                For intBindsArrID 
    = 1 To intBindsIndex
                    If instr(arrServerBindings(intBindsArrID 
    - 1) , strOldIP) Then
                        arrServerBindings(intBindsArrID 
    - 1= Replace(arrServerBindings(intBindsArrID - 1) , strOldIP , strNewIP) '把数组内包含oldip的字符串替换成newip的字符串
                    End If
                Next
                objIIs.ServerBindings = arrServerBindings 
    '把iis对象的ServerBindings属性修改为替换过IP的数组
                objIIs.setinfo 
    '使替换过的设置生效
            End If
        Next
        
    '*********************************************
        Set objW3svc       
    = Nothing
        Set objChildObject 
    = Nothing
        Set objIIs         
    = Nothing
        Set objIIsWeb      
    = Nothing
        Wscript.Echo vbCrLf 
    & "修改完成!"
    End Function

    Function Change_AppIsolated() 
    '修改应用程序保护模块
        objOutStream.Write "选择你需要设置的(0,低_IIS进程 2,中_共用的 3,高_独立的,默认设置为2):"
        intChoice = objInStream.ReadLine
        If Not IsNumeric(intChoice) Then
            Wscript.Echo "错误,你输入的不是数字!"
            Wscript.Quit
        End If
        intSiteIndex = 1 
    '站点ID的索引
        Wscript.Echo vbCrLf 
    & "开始修改……" & vbCrLf
        
    '*********************************************
        Set objW3svc = GetObject("IIS://localhost/w3svc") 
    '建立IIS对象
        For Each objChildObject In objW3svc
            If (Err.Number 
    <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) 
    = True Then '判断取出的objChildObject.Name是不是数字
                Set objIIs = objW3svc.GetObject("IIsWebServer" , objChildObject.Name)
                If Err.Number <> 0 Then
                    Exit For
                    Wscript.Echo "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                strServerComment = objIIs.ServerComment
                set objIIsWeb = objIIs.GetObject("IIsWebVirtualDir","Root")
                objIIsWeb.AppIsolated = int(intChoice)
                objIIsWeb.SetInfo
                Wscript.Echo "设置站点 " & strServerComment & " 完成!"
            End If
        Next
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
        Wscript.Echo vbCrLf & "设置完成!"
    End Function

    Function Search() 
    '搜索模块
        Wscript.Echo 
    "请选择搜索方式:" & vbCrLf
        Wscript.Echo 
    "1.根据IP查询站点信息"
        Wscript.Echo 
    "2.根据域名查询站点信息"
        Wscript.Echo 
    "3.根据站点绝对路径查询站点信息" & vbCrLf
        objOutStream.Write 
    "请选择你需要的查询方式(1 2 3):"
        strSearchMode 
    = objInStream.ReadLine

        Select Case strSearchMode
        Case 
    "1"
        Use_IP_Search()
        Case 
    "2"
        Use_Domain_Search()
        Case 
    "3"
        Use_Path_Search()
        Case Else
        Wscript.Echo String(
    30," "& "输入错误,请重新输入" & vbCrLf
        Search()
        End Select
    End Function

    Function Use_IP_Search() 
    '根据IP搜索站点信息
        objOutStream.Write "请输入你要搜索的IP(支持模糊搜索):"
        strIpString = objInStream.ReadLine
        Wscript.Echo "开始搜索……" & vbCrLf
        intSiteIndex = 1
        
    '*********************************************
        Set objW3svc 
    = GetObject("IIS://localhost/w3svc"'建立IIS对象
        For Each objChildObject In objW3svc
            If (Err.Number <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) = True Then 
    '判断objChildObject.Name是不是数字
                Set objIIs 
    = objW3svc.GetObject("IIsWebServer", objChildObject.Name) '建立IIS虚拟站点对像
                If Err.Number <> 0 Then
                    Exit For
                    Wscript.Echo "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings = objIIs.ServerBindings 
    '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                intBindsIndex 
    = UBound(arrServerBindings) + 1 '由于站点可以绑定多个域名、端口和IP,所以需要判断一共绑定了多少IP
                intSearched=0
                For intBindsArrID = 1 To intBindsIndex
                    If InStr(arrServerBindings(intBindsArrID - 1) , strIpString) Then
                        intSearched=1
                        Exit For
                    End If
                Next
                If intSearched=1 Then
                    strServerComment = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                    strMaxConnections 
    = objIIs.MaxConnections
                    Wscript.Echo 
    "站点描述:" & strServerComment
                    Set objIIsWeb
    =objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath
    =objIIsWeb.Path
                    strSearchedSite 
    = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,","& vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSiteIndex 
    = intSiteIndex + 1
                End If
            End If
        Next
        
    'Wscript.Echo strSearchedSite '打印出搜索到的站点信息
        If intSiteIndex 
    = 1 Then
            Wscript.Echo vbCrLf 
    & "未查找到站点信息!"
        Else
            Wscript.Echo vbCrLf 
    & "共查找到" & intSiteIndex - 1 & "个站点!"
            Wscript.Echo 
    "默认只显示出站点描述,如果您需要详细信息,请把搜索结果存为文件!"
            objOutStream.Write 
    "是否将站点信息存为备份文件?(YES,NO):"
            strSaveToBackup
    =objInStream.ReadLine
            If UCase(strSaveToBackup)
    ="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
    End Function

    Function Use_Domain_Search() 
    '域名搜索模块
        objOutStream.Write 
    "请输入你要搜索的域名支持模糊搜索:"
        strDomainString 
    = objInStream.ReadLine
        Set objW3svc 
    = GetObject("IIS://LocalHost/W3svc")
        Wscript.Echo 
    "开始搜索……" & vbCrLf
        intSiteIndex 
    = 1
        For Each objChildObject In objW3svc
            If (Err.Number 
    <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) 
    = True Then '判断objChildObject.Name是不是数字
                Set objIIs = objW3svc.GetObject("IIsWebServer", objChildObject.Name) 
    '建立IIS虚拟站点对像
                If Err.Number 
    <> 0 Then
                    Exit For
                    Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                intBindsIndex = UBound(arrServerBindings) + 1 
    '由于站点可以绑定多个域名、端口和IP,所以需要判断一共绑定了多少IP
                intSearched
    =0
                For intBindsArrID 
    = 1 To intBindsIndex
                    If InStr(arrServerBindings(intBindsArrID 
    - 1) , strDomainString) Then
                        intSearched
    =1
                        Exit For
                    End If
                Next
                If intSearched
    =1 Then
                    strServerComment 
    = objIIs.ServerComment '把IIS虚拟站点的名称赋值给变量ServerComment
                    strMaxConnections = objIIs.MaxConnections
                    Wscript.Echo "站点描述:" & strServerComment
                    Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath=objIIsWeb.Path
                    strSearchedSite = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,",") & vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSiteIndex = intSiteIndex + 1
                End If
            End If
        Next
        
    'Wscript.Echo strSearchedSite '打印出搜索到的站点信息
        If intSiteIndex = 1 Then
            Wscript.Echo vbCrLf & "未查找到站点信息!"
        Else
            Wscript.Echo vbCrLf & "共查找到" & intSiteIndex - 1 & "个站点!"
            Wscript.Echo "默认只显示出站点描述,如果您需要详细信息,请把搜索结果存为文件!"
            objOutStream.Write "是否将站点信息存为备份文件?(YES,NO):"
            strSaveToBackup=objInStream.ReadLine
            If UCase(strSaveToBackup)="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       
    = Nothing
        Set objChildObject 
    = Nothing
        Set objIIs         
    = Nothing
        Set objIIsWeb      
    = Nothing

    End Function

    Function Use_Path_Search() 
    '域名搜索模块
        objOutStream.Write "请输入你要搜索的绝对路径(支持模糊搜索):"
        strPathString = objInStream.ReadLine
        Set objW3svc = GetObject("IIS://LocalHost/W3svc")
        Wscript.Echo "开始搜索……" & vbCrLf
        intSiteIndex = 1
        For Each objChildObject In objW3svc
            If (Err.Number <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) = True Then 
    '判断objChildObject.Name是不是数字
                Set objIIs 
    = objW3svc.GetObject("IIsWebServer", objChildObject.Name) '建立IIS虚拟站点对像
                If Err.Number <> 0 Then
                    Exit For
                    Wscript.Echo "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                If instr(objIIsWeb.Path , strPathString) Then
                    strServerComment = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                    arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                    strMaxConnections = objIIs.MaxConnections
                    strPath=objIIsWeb.Path
                    Wscript.Echo "站点描述:" & strServerComment
                    strSearchedSite = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,",") & vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSiteIndex = intSiteIndex + 1
                End If
            End If
        Next
        
    'Wscript.Echo strSearchedSite '打印出搜索到的站点信息
        If intSiteIndex = 1 Then
            Wscript.Echo vbCrLf & "未查找到站点信息!"
        Else
            Wscript.Echo vbCrLf & "共查找到" & intSiteIndex - 1 & "个站点!"
            Wscript.Echo "默认只显示出站点描述,如果您需要详细信息,请把搜索结果存为文件!"
            objOutStream.Write "是否将站点信息存为备份文件?(YES,NO):"
            strSaveToBackup=objInStream.ReadLine
            If UCase(strSaveToBackup)="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
        
    '*********************************************
        Set objW3svc       
    = Nothing
        Set objChildObject 
    = Nothing
        Set objIIs         
    = Nothing
        Set objIIsWeb      
    = Nothing
    End Function

    Function DeleteSite()
        Wscript.Echo vbCrLf 
    & "请选择批量删除的方式:" & vbCrLf
        Wscript.Echo 
    "1.根据IP删除站点" & vbCrLf
        Wscript.Echo 
    "2.根据域名删除站点" & vbCrlf
        Wscript.Echo 
    "3.根据站点描述删除站点" & vbCrLf
        Wscript.Echo 
    "4.删除所有站点信息" & vbCrLf
        objOutStream.Write 
    "请选择你需要的删除方式(1 2 3 4):"
        strDeleteMode 
    = objInStream.ReadLine

        Select Case strDeleteMode
            Case 
    "1"
            Delete_By_Ip()
            Case 
    "2"
            Delete_By_Domain()
            Case 
    "3"
            Delete_By_SiteComment()
            Case 
    "4"
            Delete_All_Site()
            Case Else
            Wscript.Echo vbCrLf 
    & String(30," "& "输入错误,请重新输入!"
            DeleteSite()
        End Select
    End Function

    Function Delete_By_Ip()
        objOutStream.Write 
    "请输入你要删除的站点的IP(支持模糊查询):"
        strIpString 
    = objInStream.ReadLine
        Wscript.Echo vbCrLf 
    & "开始搜索……" & vbCrLf
        Set objW3svc 
    = GetObject("IIS://LocalHost/W3svc")
        intSiteIndex 
    = 0
        For Each objChildObject In objW3svc
            If (Err.Number 
    <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) 
    = True Then
                arrSiteId(intSiteIndex) 
    = CLng(objChildObject.Name)
                intSiteIndex 
    = intSiteIndex + 1
            End If
        Next
        intCountDeleteSite 
    = 0
        For intDeleteId 
    = 0 To intSiteIndex - 1
                Set objIIs 
    = objW3svc.GetObject("IIsWebServer", arrSiteId(intDeleteId)) '建立IIS虚拟站点对像
                If Err.Number <> 0 Then
                    Exit For
                    Wscript.Echo "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings = objIIs.ServerBindings 
    '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                intBindsIndex 
    = UBound(arrServerBindings) + 1 '由于站点可以绑定多个域名、端口和IP,所以需要判断一共绑定了多少IP
                intSearched = 0
                For intBindsArrID = 1 To intBindsIndex
                    If InStr(arrServerBindings(intBindsArrID - 1) , strIpString) Then
                        intSearched=1
                        Exit For
                    End If
                Next
                Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                If intSearched=1 Then
                    strServerComment = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                    strMaxConnections 
    = objIIs.MaxConnections
                    Set objIIsWeb
    =objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath
    =objIIsWeb.Path
                    objW3svc.Delete 
    "IISWebServer" , arrSiteId(intDeleteId)
                    Wscript.Echo 
    "删除站点: " & strServerComment & "完成!"
                    strSearchedSite 
    = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,","& vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSearched 
    = 0
                    intCountDeleteSite 
    = intCountDeleteSite + 1
                End If
        Next
        If intCountDeleteSite 
    = 0 Then
            Wscript.Echo vbCrLf 
    & "未查找到要删除的站点信息!"
        Else
            Wscript.Echo vbCrLf 
    & "共删除" & intCountDeleteSite & "个站点!"
            objOutStream.Write 
    "是否将已删除的站点信息存为备份文件?(YES,NO):"
            strSaveToBackup
    =objInStream.ReadLine
            If UCase(strSaveToBackup)
    ="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
    End Function

    Function Delete_By_Domain()
        objOutStream.Write "请输入你要删除的站点的域名(支持模糊查询):"
        strDomainString = objInStream.ReadLine
        Wscript.Echo vbCrLf & "开始搜索……" & vbCrLf
        Set objW3svc = GetObject("IIS://LocalHost/W3svc")
        intSiteIndex = 0
        For Each objChildObject In objW3svc
            If (Err.Number <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) = True Then
                arrSiteId(intSiteIndex) = CLng(objChildObject.Name)
                intSiteIndex = intSiteIndex + 1
            End If
        Next
        intCountDeleteSite = 0
        For intDeleteId = 0 To intSiteIndex - 1
                Set objIIs = objW3svc.GetObject("IIsWebServer", arrSiteId(intDeleteId)) 
    '建立IIS虚拟站点对像
                If Err.Number 
    <> 0 Then
                    Exit For
                    Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                intBindsIndex = UBound(arrServerBindings) + 1 
    '由于站点可以绑定多个域名、端口和IP,所以需要判断一共绑定了多少IP
                intSearched 
    = 0
                For intBindsArrID 
    = 1 To intBindsIndex
                    If InStr(arrServerBindings(intBindsArrID 
    - 1) , strDomainString) Then
                        intSearched
    =1
                        Exit For
                    End If
                Next
                Set objIIsWeb
    =objIIs.GetObject("IIsWebVirtualDir","Root")
                If intSearched
    =1 Then
                    strServerComment 
    = objIIs.ServerComment '把IIS虚拟站点的名称赋值给变量ServerComment
                    strMaxConnections = objIIs.MaxConnections
                    Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath=objIIsWeb.Path
                    objW3svc.Delete "IISWebServer" , arrSiteId(intDeleteId)
                    Wscript.Echo "删除站点: " & strServerComment & "完成!"
                    strSearchedSite = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,",") & vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSearched = 0
                    intCountDeleteSite = intCountDeleteSite + 1
                End If
        Next
        If intCountDeleteSite = 0 Then
            Wscript.Echo vbCrLf & "未查找到要删除的站点信息!"
        Else
            Wscript.Echo vbCrLf & "共删除" & intCountDeleteSite & "个站点!"
            objOutStream.Write "是否将已删除的站点信息存为备份文件?(YES,NO):"
            strSaveToBackup=objInStream.ReadLine
            If UCase(strSaveToBackup)="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       
    = Nothing
        Set objChildObject 
    = Nothing
        Set objIIs         
    = Nothing
        Set objIIsWeb      
    = Nothing
    End Function

    Function Delete_By_SiteComment
        objOutStream.Write 
    "请输入你要删除的站点的描述(支持模糊查询):"
        strCommentString 
    = objInStream.ReadLine
        Wscript.Echo vbCrLf 
    & "开始搜索……" & vbCrLf
        Set objW3svc 
    = GetObject("IIS://LocalHost/W3svc")
        intSiteIndex 
    = 0
        For Each objChildObject In objW3svc
            If (Err.Number 
    <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) 
    = True Then
                arrSiteId(intSiteIndex) 
    = CLng(objChildObject.Name)
                intSiteIndex 
    = intSiteIndex + 1
            End If
        Next
        intCountDeleteSite 
    = 0
        For intDeleteId 
    = 0 To intSiteIndex - 1
                Set objIIs 
    = objW3svc.GetObject("IIsWebServer", arrSiteId(intDeleteId)) '建立IIS虚拟站点对像
                If Err.Number <> 0 Then
                    Exit For
                    Wscript.Echo "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                If Instr(Cstr(objIIs.ServerComment) , strCommentString) or Cstr(objIIs.ServerComment) = strCommentString  Then
                    intSearched=1
                End If
                Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                If intSearched=1 Then
                    strServerComment = objIIs.ServerComment
                    arrServerBindings = objIIs.ServerBindings 
    '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                    strMaxConnections 
    = objIIs.MaxConnections
                    Set objIIsWeb
    =objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath
    =objIIsWeb.Path
                    objW3svc.Delete 
    "IISWebServer" , arrSiteId(intDeleteId)
                    Wscript.Echo 
    "删除站点: " & strServerComment & "完成!"
                    strSearchedSite 
    = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,","& vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intSearched 
    = 0
                    intCountDeleteSite 
    = intCountDeleteSite + 1
                End If
        Next
        If intCountDeleteSite 
    = 0 Then
            Wscript.Echo vbCrLf 
    & "未查找到要删除的站点信息!"
        Else
            Wscript.Echo vbCrLf 
    & "共删除" & intCountDeleteSite & "个站点!"
            objOutStream.Write 
    "是否将已删除的站点信息存为备份文件?(YES,NO):"
            strSaveToBackup
    =objInStream.ReadLine
            If UCase(strSaveToBackup)
    ="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
    End Function

    Function Delete_All_Site()
        Wscript.Echo vbCrLf & "开始删除……" & vbCrLf
        Set objW3svc = GetObject("IIS://LocalHost/W3svc")
        intSiteIndex = 0
        For Each objChildObject In objW3svc
            If (Err.Number <> 0) Then Exit For
            If IsNumeric(objChildObject.Name) = True Then
                arrSiteId(intSiteIndex) = CLng(objChildObject.Name)
                intSiteIndex = intSiteIndex + 1
            End If
        Next
        intCountDeleteSite = 0
        For intDeleteId = 0 To intSiteIndex - 1
                Set objIIs = objW3svc.GetObject("IIsWebServer", arrSiteId(intDeleteId)) 
    '建立IIS虚拟站点对像
                If Err.Number 
    <> 0 Then
                    Exit For
                    Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
                    Err.Clear()
                    Wscript.Quit
                End If
                arrServerBindings 
    = objIIs.ServerBindings '把IIS虚拟站点绑定的IP、端口、域名的值放入数组ServerBindings
                Set objIIsWeb=objIIs.GetObject("IIsWebVirtualDir","Root")
                    strServerComment = objIIs.ServerComment 
    '把IIS虚拟站点的名称赋值给变量ServerComment
                    strMaxConnections 
    = objIIs.MaxConnections
                    Set objIIsWeb
    =objIIs.GetObject("IIsWebVirtualDir","Root")
                    strPath
    =objIIsWeb.Path
                    objW3svc.Delete 
    "IISWebServer" , arrSiteId(intDeleteId)
                    Wscript.Echo 
    "删除站点: " & strServerComment & "完成!"
                    strSearchedSite 
    = strSearchedSite & strServerComment & vbTab & Join(arrServerBindings,","& vbTab & strMaxConnections & vbTab & strPath & vbCrLf
                    intCountDeleteSite 
    = intCountDeleteSite + 1
        Next
        If intCountDeleteSite 
    = 0 Then
            Wscript.Echo vbCrLf 
    & "未查找到要删除的站点信息!"
        Else
            Wscript.Echo vbCrLf 
    & "共删除" & intCountDeleteSite & "个站点!"
            objOutStream.Write 
    "是否将已删除的站点信息存为备份文件?(YES,NO):"
            strSaveToBackup
    =objInStream.ReadLine
            If UCase(strSaveToBackup)
    ="YES" Then
                SaveToFile(strSearchedSite)
            End If
        End If
        
    '*********************************************
        Set objW3svc       = Nothing
        Set objChildObject = Nothing
        Set objIIs         = Nothing
        Set objIIsWeb      = Nothing
    End Function


    Function SaveToFile(strResult) 
    '保存文件
        objOutStream.Write 
    "请输入保存的文件名:"
        strSaveFileName
    =objInStream.ReadLine
        Set objFso
    =CreateObject("Scripting.FileSystemObject")
        If objFso.FileExists(strSaveFileName) Then
            Wscript.Echo 
    "文件" & strSaveFileName & "已经存在!"
            objOutStream.Write 
    "是否追加写入文件?(Yes,No)"
            strOverWrite 
    = objInStream.ReadLine
            If UCase(strOverWrite) 
    = "YES" Then
                Set objResultFile
    =objFso.OpenTextFile(strSaveFileName , ForAppending , True)
                objResultFile.Write strResult
                objResultFile.Close
                Wscript.Echo 
    "写入文件" & strSaveFileName & "完成!"
            End If

            If UCase(strOverWrite) 
    = "NO" Then
                objOutStream.Write 
    "请重命名文件:"
                strSaveFileName 
    = objInStream.ReadLine
                Set objResultFile 
    = objFso.CreateTextFile(strSaveFileName,True)
                objResultFile.Write strResult
                objResultFile.Close
                Wscript.Echo 
    "保存文件 " & strSaveFileNmae & " 完成!"
            End If
        Else
            Set objResultFile 
    = objFso.CreateTextFile(strSaveFileName , True)
            objResultFile.Write strResult
            objResultFile.Close
            Wscript.Echo 
    "保存文件 " & strSaveFileName & " 完成!"
        End If
        Set objFso 
    = Nothing
    End Function


    Function CreateWebServer(strServerComment,arrServerBindings,strMaxConnections,strPath)
    '建立站点
        On Error Resume Next
        Set objW3svc = GetObject("IIS://LocalHost/W3svc")
        intSiteIndex = 1

        Do While IsObject(objW3svc.GetObject("IIsWebServer",intSiteIndex))
            If Err.Number <> 0 Then
                
    'Wscript.Echo Err.Description
                Err.Clear()
                Exit Do
            End If
            intSiteIndex 
    = intSiteIndex + 1
        Loop

        Set objIIs 
    = objW3svc.Create("IIsWebServer",intSiteIndex)
        If Err.Number 
    <> 0 Then
            Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
            Err.Clear()
            CreateWebServer 
    = 0
            Exit Function
        End If

        objIIs.ServerSize 
    = 1
        objIIs.ServerComment    
    = strServerComment
        objIIs.ServerBindings   
    = arrServerBindings
        objIIs.MaxConnections   
    = strMaxConnections
        objIIs.EnableDefaultDoc 
    = True
        objIIs.SetInfo
        Set objIIsWeb 
    = objIIs.Create("IIsWebVirtualDir""Root")
        If Err.Number 
    <> 0 Then
            Wscript.Echo 
    "Error # " & CStr(Err.Number) & " " & Err.Description
            Err.Clear()
            CreateWebServer 
    = 0
            Exit Function
        End If
        objIIsWeb.Path              
    = strPath
        objIIsWeb.AccessRead        
    = True
        objIIsWeb.AccessWrite       
    = False
        objIIsWeb.EnableDirBrowsing 
    = False 
        objIIsWeb.EnableDefaultDoc  
    = True 
        objIIsWeb.AccessScript      
    = True
        objIIsWeb.AppIsolated       
    = 2
        objIIsWeb.AppCreate2            
    2
        objIIsWeb.AppFriendlyName   
    = "默认应用程序" 
        objIIsWeb.SetInfo
        Set objW3svc  
    = Nothing
        Set objIIs    
    = Nothing
        Set objIIsWeb 
    = Nothing
        CreateWebServer 
    = 1
    End Function

    Function HELP()
        Wscript.Echo vbCrLf 
    & "                          IIS Manager By Tom"
        Wscript.Echo 
    "                            Made By Tom"
        Wscript.Echo 
    "                            http://www.zz.la/" & vbCrLf
        Wscript.Echo 
    "Cscript iismanager.vbs [操作类型] [文件名]" & vbCrLf
        Wscript.Echo 
    "Backup (备份IIS站点信息到一个文本文件!)"
        Wscript.Echo 
    "Restore (从一个文本文件恢复IIS站点信息!)"
        Wscript.Echo 
    "ChangeIP (修改所有IIS站点IP!)"
        Wscript.Echo 
    "Change_App (修改所有IIS站点应用程序级别!)"
        Wscript.Echo 
    "Search (根据条件查找站点信息!)"
        Wscript.Echo 
    "DeleteSite (根据条件批量删除站点)" & vbCrLf
    End Function

    '想到的新功能
    '备份功能增加一个备份站点数据的功能,通过RAR自动打包,默认打包到站点的上级目录,可选择打包的指定的目录
    '增加建立隐藏虚拟目录的功能
    '批量删除绑定的指定IP
    '程序运行时判断IIS是否启动
    '恢复站点绝对路径的ACL信息


     //H:CScript 将默认的脚本宿主改为 CScript.exe
     //H:WScript 将默认的脚本宿主改为 WScript.exe (默认)
     //I         交互模式(默认,与 //B 相对)
     //Job:xxxx  执行一个 WSF 工作
     //Logo      显示徽标(默认)
     //Nologo    不显示徽标:执行时不显示标志
     //S         为该用户保存当前命令行选项
     //T:nn      超时设定秒:允许脚本运行的最长时间
     //X         在调试器中执行脚本
     //U         用 Unicode 表示来自控制台的重定向 I/O

  • 相关阅读:
    精选css动画库及其使用
    使用js reduce方法求数组中出现次数最多的元素
    文字横向滚动效果,公告效果
    判断是否是微信端
    移动端input/textarea输入框光标高度兼容及其他事项
    更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
    Git 常见问题整理
    CentOS 7.0 安装配置LAMP服务器方法(Apache+PHP+MariaDB)
    centos7安装eclipse
    centos7安装mplayer的方法
  • 原文地址:https://www.cnblogs.com/ahuo/p/1420501.html
Copyright © 2011-2022 走看看