VBS 操作 IIS

1.获得所有站点ID、名称、路径

Set ObjService=GetObject("IIS://LocalHost/W3SVC")
For Each obj3w In objservice
If IsNumeric(obj3w.Name) Then
sServerName=Obj3w.ServerComment
Set webSite = GetObject("IIS://Localhost/W3SVC/" & obj3w.Name & "/Root")
ListAllWeb = ListAllWeb & obj3w.Name & String(25-Len(obj3w.Name)," ") & obj3w.ServerComment & "(" & webSite.Path & ")" & vbCrLf
End If
Next
WScript.Echo ListAllWeb
Set ObjService=Nothing
WScript.Quit

2.安装包安装,自动建立Webservice站点,最好的操作就是通过VBS去做,IIS命令是不支持IIS6.0的。

On Error Resume Next 
strVirtualDirectoryName="LoggerWeb"
strVirtualDirectoryPath="D:\"

strVirtualDirectoryPath=Replace(strVirtualDirectoryPath,"/","\")
Set MyFso=CreateObject("Scripting.FileSystemObject")
If MyFso.FolderExists(strVirtualDirectoryPath)=0 Then
    MsgBox(strVirtualDirectoryPath&"目录不存在!无法创建虚拟目录!")
Else
    '获取站点ID
    Set ObjService=GetObject("IIS://LocalHost/W3SVC")
    For Each obj3w In objservice
    If IsNumeric(obj3w.Name) Then
        Set objIIS=GetObject("IIS://localhost/W3SVC/" & obj3w.Name & "/Root")   
    End If
    Next

 (注意:此前我并没有加入上段内容,在实际测试发现,有的工程人员会无意间把IIS中默认的站点删掉,这样导致Webservice无法安装。因为创建的对象要具体到某个站点的ID下"IIS://localhost/W3SVC/1/Root",其中1 代表站点的ID,而默认的站点ID为1,所以我需要遍历获取所有站点中ID值最小的并进行Webservice的安装。当然,如果你有其它需求,改之即可)
    Set objVirtualDirectory=objIIS.Create("IISWebVirtualDir",strVirtualDirectoryName)
    If(Err.Number<>0) Then '如果虚拟目录已存在或有其它错误时则为真
        Err.Clear
        Set MyDir=objIIS.GetObject("IISWebVirtualDir",strVirtualDirectoryName) '创建虚拟目录
        If(Err.Number<>0)Then '虚拟目录不存在时则为真,说明是其他未知错误,否则为虚拟目录已存在 
            MsgBox("对不起,发生了未知错误,LoggerWeb创建失败!")
            WScript.Quit(Err.Number)
        End If
        objIIS.Delete "IIsObject",strVirtualDirectoryName
        '删除失败
        If (Err.Number<>0)Then
            MsgBox("覆盖"&strVirtualDirectoryName&"失败!")   
            WScript.Quit(Err.Number)
        End if
        Set objVirtualDirectory=objIIS.Create("IISWebVirtualDir",strVirtualDirectoryName)
            objVirtualDirectory.AccessScript=True '访问脚步
            objVirtualDirectory.Path=strVirtualDirectoryPath
            objVirtualDirectory.EnableDefaultDoc=True '启用默认文档
            objVirtualDirectory.DefaultDoc="Default.aspx" 
            objVirtualDirectory.AppFriendlyName=strVirtualDirectoryName '名称
            objVirtualDirectory.SetInfo
            objVirtualDirectory.AppCreate True 
            
    Else
        objVirtualDirectory.AccessScript=True '访问脚步
        objVirtualDirectory.Path=strVirtualDirectoryPath
        objVirtualDirectory.EnableDefaultDoc=True '启用默认文档
        objVirtualDirectory.DefaultDoc="Default.aspx" 
        objVirtualDirectory.AppFriendlyName=strVirtualDirectoryName '名称
        objVirtualDirectory.SetInfo
        objVirtualDirectory.AppCreate True 
        
    End If
End If 
Set MyFso=Nothing

   

3.做安装包时,需要创建站点,那么在卸载时就需要将其删除,下文通过遍历IIS站点,根据站点名称得到对应的ID号,删除此站点

Set ObjWebSite=GetObject("IIS://LocalHost/W3SVC")
For Each objSite In ObjWebSite
If IsNumeric(objSite.Name) Then '如果是数字
    If objSite.ServerComment="M3Setting" then '判断是否与站点“M3Setting”名称相同
        id=objSite.Name
        ObjWebSite.delete "IISWebServer",id  '删除此站点

    Set ObjWebSite=Nothing
    End If

End if

4.删除某个Webservice

Set ObjService=GetObject("IIS://LocalHost/W3SVC")
ForEach obj3wIn objservice
IfIsNumeric(obj3w.Name) Then
    Set objIIS=GetObject("IIS://localhost/W3SVC/" & obj3w.Name)   
    vID=obj3w.Name '获取站点ID
EndIf
Next

Set objVirtualDirectory=objIIS.GetObJect("IISWebVirtualDir","Root") '定位站点路径

ForEach vrIn objVirtualDirectory '遍历站点
If vr.Name="LoggerWeb"Then
    Set IISLogger=GetObject("IIS://localhost/W3SVC/" & vID &"/Root") '定位站点路径  
    IISLogger.Delete"IIsObject","LoggerWeb" '删除
EndIf
Next

ForEach vrIn objVirtualDirectory
If vr.Name="S1WebService"Then
    Set IISS1=GetObject("IIS://localhost/W3SVC/" & vID &"/Root")   
    IISS1.Delete"IIsObject","S1WebService"
EndIf
Next


5.设置IIS应用程序池

安装包安装完成后,因为客户对IIS不怎么了解,需要大量时间去指导怎么设置IIS的配置,便抽了些许时间完成一个函数,方便调用:
Function CreateAppPool(NewAppPoolName)
    Set AppPools = GetObject("IIS://localhost/W3SVC/AppPools")
    set NewPool = AppPools.Create("IIsApplicationPool",NewAppPoolName)
    If(Err.Number<>0) Then
  Err.Clear
 else
     NewPool.AppPoolIdentityType = 2'预定义账户0本地系统1本地服务2网络服务
     NewPool.Enable32BitAppOnWin64 = True
     NewPool.ManagedRuntimeVersion = "v2.0"
     NewPool.ManagedPipelineMode=Integrated
     NewPool.AppPoolAutoStart = true'自动启动此池
     NewPool.SetInfo
     Set AppPools = nothing
     set NewPool = nothing
     if err.number=0 then CreateAppPool=True
    End if
end function

 

在2步骤中,添加 objVirtualDirectory.AppPoolId="LoggerWeb" '应用程序池,可以设置创建的WebService的应用程序池.

属性详解:

http://msdn.microsoft.com/en-us/library/ms524328(v=vs.90).aspx

转载于:https://www.cnblogs.com/zhulinyixuan/archive/2013/06/14/3135424.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值