应用程序池中的站点分割方法

 
w3wp.exe \\是对应每个不同的应用程序池,
iisapp.vbs \\查看应用程序池列表。
E:\Setup\VBS\AppSplit.vbs /split "Original pool" "New pool" \\将原池中的站点分一半到新池中。
E:\Setup\VBS\AppSplit.vbs /add "Original pool" "New pool" \\将新池中的站点合并到原池中。
第一条命令执行结果如下:
E:\Setup\VBS\AppSplit.vbs /split "Original pool" "New pool"

Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
应用程序池 Original pool中共有 47 个站点
    分隔出去 23 个站点:
正在处理:qj1013.com
正在处理:m5188.com
正在处理:yptms.com
正在处理:baichenguoji.com
正在处理:ilinkworld.net
正在处理:lianbiaojb.com
正在处理:cpshxd.cn
正在处理:ekotree.com
正在处理:tdodo.com
正在处理:chinaculc.com
正在处理:managementgolf.com
正在处理:sjzonling.com
正在处理:dqdcbjb.com
正在处理:xiangheqx.com
正在处理:bjqxwl.com
正在处理:rosdsp.com
正在处理:cnfoodnet.com
正在处理:yuitsu.com
正在处理:yingxiao.hyjk.net
正在处理:0357e.com
正在处理:hw-hd.com
正在处理:meb2b.cn
正在处理:shhg.info
处理完成
===========================================================================
第二条命令执行结果如下:
E:\Setup\VBS\AppSplit.vbs /split "Original pool" "New pool"

Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
应用程序池 New pool 中共有 23 个站点
开始把这 23 个站点合并到池 Original pool 中
正在处理:qj1013.com
正在处理:m5188.com
正在处理:yptms.com
正在处理:baichenguoji.com
正在处理:ilinkworld.net
正在处理:lianbiaojb.com
正在处理:cpshxd.cn
正在处理:ekotree.com
正在处理:tdodo.com
正在处理:chinaculc.com
正在处理:managementgolf.com
正在处理:sjzonling.com
正在处理:dqdcbjb.com
正在处理:xiangheqx.com
正在处理:bjqxwl.com
正在处理:rosdsp.com
正在处理:cnfoodnet.com
正在处理:yuitsu.com
正在处理:yingxiao.hyjk.net
正在处理:0357e.com
正在处理:hw-hd.com
正在处理:meb2b.cn
正在处理:shhg.info
处理完成
==================================================================
以下为上述脚本的内容:
Dim ArgObj
Const GENERAL_FAILURE = 2
'传递过来的参数
Set ArgObj = WScript.Arguments
'如果传递过来的参数少于3个,显示帮助
If ArgObj.Count < 3 Then
DisplayHelpMessage
WScript.Quit (GENERAL_FAILURE)
End If
Dim Opt,SourceApp,DesignApp,AppNum
Dim WWWServer,SiteObj,Obj,SiteApp,Obj1
Dim Arr(),Arr1(),N,T
Opt=ArgObj.Item(0)              '第一个参数,做什么操作
SourceApp=ArgObj.Item(1) '第二个参数,源池名称
DesignApp=ArgObj.Item(2) '第三个参数,目的池名称
N=0
Select Case LCase(Opt)
Case "/split"
   '分隔操作
   Set WWWServer = GetObject("IIS://Localhost/W3SVC")
   For Each SiteObj In WWWServer
    If SiteObj.Class="IIsWebServer" Then
     Set Obj=SiteObj.GetObject("IIsWebVirtualDir","ROOT")
     SiteApp=Obj.AppPoolId
     If LCase(SiteApp)=LCase(SourceApp) Then
      ReDim Preserve Arr(N)
      ReDim Preserve Arr1(N)
      Set Arr(N)=Obj
      Set Arr1(N)=SiteObj
      N=N+1
     End If
    End If
   Next
   If N<2 Then
    WScript.Echo "您指定的应用程序池中的站点数太少,至少得有两个站点才可以分隔"
    WScript.Quit (GENERAL_FAILURE)
   End If
   '分隔出来的应用程序池的个数
   AppNum=N \ 2
   '开始创建目的应用程序池
   CreateAppPool DesignApp
   T=0
   WScript.Echo "应用程序池 " & SourceApp & " 中共有 " & N & " 个站点"
   WScript.Echo "    分隔出去 " & AppNum & " 个站点:"
   For Each Obj1 In Arr
    T=T+1
    If T>AppNum Then
     Exit For
    End If
    WScript.Echo "正在处理:" & Arr1(T-1).ServerComment
    Obj1.AppPoolId=DesignApp
    Obj1.SetInfo
   Next
   WScript.Echo "处理完成"
Case "/add"
   '合并操作
   Set WWWServer = GetObject("IIS://Localhost/W3SVC")
   For Each SiteObj In WWWServer
    If SiteObj.Class="IIsWebServer" Then
     Set Obj=SiteObj.GetObject("IIsWebVirtualDir","ROOT")
     SiteApp=Obj.AppPoolId
     If LCase(SiteApp)=LCase(DesignApp) Then
      ReDim Preserve Arr(N)
      ReDim Preserve Arr1(N)
      Set Arr(N)=Obj
      Set Arr1(N)=SiteObj
      N=N+1
     End If
    End If
   Next
   If N<1 Then
    WScript.Echo "您指定的应用程序池中没有站点,未操作"
    WScript.Quit (GENERAL_FAILURE)
   End If
   CreateAppPool SourceApp   '如果源应用程序池不存在,则创建
   WScript.Echo "应用程序池 " & DesignApp & " 中共有 " & N & " 个站点"
   WScript.Echo "开始把这 " & N & " 个站点合并到池 " & SourceApp & " 中"
   T=0
   For Each Obj1 In Arr
    T=T+1
    WScript.Echo "正在处理:" & Arr1(T-1).ServerComment
    Obj1.AppPoolId=SourceApp
    Obj1.SetInfo
   Next
   WScript.Echo "处理完成"
Case Else
   DisplayHelpMessage
End Select
'创建一个应用程序池
Public Function CreateAppPool(ByRef AppName)
Dim ServerObj, AppObj
CreateAppPool=False
On Error Resume Next
Set ServerObj = GetObject("IIS://Localhost/W3SVC/AppPools")
Err.Clear
Set AppObj = ServerObj.Create("IIsApplicationPool", AppName)
AppObj.SetInfo
If Err.Number <> 0 Then
   Exit Function
End If
Set AppObj=Nothing
Set ServerObj=Nothing
CreateAppPool=True
End Function

Sub DisplayHelpMessage
With WScript
   .Echo "使用帮助:"
   .Echo "    AppSplit /[Split|Add] 源应用程序池名称 目的应用程序池名称"
   .Echo ""
   .Echo "        [Split]把源应用程序池里的站点,分隔成两个,以便排查哪个站点出现了问题"
   .Echo ""
   .Echo "        [Add]把目的应用程序池中的站点合并到源应用程序池中"
End With
End Sub
=============================================================================
 

你可能感兴趣的:(职场,应用程序,休闲,站点)