有没有办法一次回收IIS6服务器上的所有应用程序池,而不使用iisreset或手动回收每个应用程序池?
如果您拥有所有应用程序池的名称,则可以在脚本中使用iisapp.vbs (在systemroot \ system32中)重新启动它们。
iisapp /a NameOfAppPool /r
我结束了使用下面的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/
如果你需要将它们全部回收,你可能还需要IISReset。
或者(如果这是例如FTP保存练习),则可以尝试重新启动仅WWW发布服务。