如何在没有 iisreset 的情况下回收 IIS6 上的所有应用程序池?

如何在没有 iisreset 的情况下回收 IIS6 上的所有应用程序池?

有没有办法一次回收 IIS6 服务器上的所有应用程序池,而无需使用iisreset或手动回收每个应用程序池?

答案1

如果你有所有应用程序池的名称,则可以使用iisapp 脚本(在 systemroot\system32 中)在脚本中重新启动它们全部。

iisapp /a NameOfAppPool /r

答案2

我最终对 IIS6 使用了以下 VBScript:

Set oWMI = GetObject _
    ("winmgmts:{authenticationLevel=pktPrivacy}!root\MicrosoftIISv2")
Set aAppPools = oWMI.ExecQuery("Select * from IIsApplicationPool")

For Each oItem in aAppPools
    WScript.Echo("Recycling " & oItem.Name & "...")
    oAppPool.Recycle
Next

WScript.Echo("Recycled " & aAppPools.Count & " Application Pools.")

它的优点是不需要事先知道应用程序池的名称,但是您必须启用 WMI。

IIS7 的版本如下:

Set oWebAdmin = GetObject _
    ("winmgmts:{authenticationLevel=pktPrivacy}!root\WebAdministration")
Set aAppPools = oWebAdmin.InstancesOf("ApplicationPool")

For Each oAppPool in aAppPools
    WScript.Echo("Recycling " & oAppPool.Name & "...")
    oAppPool.Recycle
Next

WScript.Echo("Recycled " & aAppPools.Count & " Application Pools.")

资源:
http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using-WMI-in-IIS-6.0.aspx
http://www.vbsedit.com/scripts/iis/iis6/apps/scr_476.asp
http://msdn.microsoft.com/en-us/library/ms525309(v=vs.90).aspx
http://learn.iis.net/page.aspx/162/managing-sites-with-iis39s-wmi-provider/

答案3

如果需要全部回收它们,不妨使用 IISReset。

或者(例如,如果这是 FTP 保存练习),您可以尝试仅重新启动 WWW 发布服务。

相关内容