2010-02-11 54 views
6

我正在使用IIS 6.0並尋找停止/啓動應用程序池的方法。我知道7.0中有一個適用於PowerShell的stop-appPool,但使用6.0。 :-(因此,沒有人有一個PowerShell腳本或其他命令行exe文件,將停止/啓動應用程序池?使用Powershell或命令行啓動/停止應用程序池IIS6.0

感謝。

+3

看起來您可以通過WMI執行此操作,因此您只需將其轉換爲PowerShell:http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using- WMI-在-IIS-6.0.aspx。 – 2010-02-12 01:40:17

回答

7

確定這裏是這樣,我只需添加一個開關停止應用程序池其他它,因爲沒有壞處開始在這起已啓動一個應用程序池:

param([string]$appPoolName, [switch]$stop) 

$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" -class "IIsApplicationPool" | where-object {$_.Name -eq "W3SVC/AppPools/$appPoolName"} 

if($appPool) 
{ 
    if($stop) 
    { 
     $appPool.Stop() 
    } 
    else 
    { 
     $appPool.Start() 
    } 
} 
2

你可能有興趣在這個PowerShell的圖書館,我開始維護:

psDeployhttp://rprieto.github.com/psDeploy/

在其他方面也有很多的cmdlet的IIS6的自動化,例如啓動IIS6AppPool新IIS6Website ...

我希望它能幫助!

0

你可以創建一個函數來停止或啓動如下遠程應用程序池:

function StopOrStartAppPool($RemoteServerName, $AppPoolName, $commandWebPool) 
{ 

    if ($commandWebPool -eq "Stop") 
    { 
     $wmiprocess = [wmiclass]"\\$RemoteServerName\root\cimv2:win32_process" 
     $wmiprocess.create("cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs STOP_SERVER W3SVC/AppPools/$AppPoolName -s:$RemoteServerName") 
    } 
    else 
    { 
     $wmiprocess = [wmiclass] "\\$RemoteServerName\root\cimv2:win32_process" 
     $wmiprocess.create("cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs START_SERVER W3SVC/AppPools/$AppPoolName -s:$RemoteServerName")  
    } 
} 
3

如果有人正在尋找一個純粹的命令行工具,不需要PowerShell中,我有created such a thing基礎上,包含在其他答案中的信息。由於原來的問題是專門尋找可能的命令行替代方案,我以爲我會在這裏分享它。

用法很簡單:

IIS6AppPool Start DefaultAppPool 
IIS6AppPool Stop AppPool #1 
IIS6AppPool Recycle Some other app pool 

Sourcebinaries可在到位桶。這可以節省別人幾分鐘的頭部劃傷。

2

如果在Windows Server 2003上它更容易使用所提供的腳本iisapp.vbs

CScript.exe C:\WINDOWS\system32\iisapp.vbs /? 
CScript.exe C:\WINDOWS\system32\iisapp.vbs /a MyApp /r 

或者根據您的設置(默認爲Cscript不WScript的),只是

iisapp /a MyApp /r 

當然它是不同的IIS7

1

如果你希望這樣做遠程,和/或在沒有PowerShell的機器上,你可以修改腳本發佈編號here

它使用WMI從VBScript訪問和回收應用程序池。使它停止/啓動池而不是回收它們是一個微不足道的變化,您只需在有問題的應用程序池中調用.Stop.Start即可。

腳本的肉被意譯如下:

strServer = "LocalHost" 'Server name goes here 
strAppPoolName = "MyAppPool" 'App pool name goes here 

'Connect to the specified server using WMI 
set Locator = CreateObject("WbemScripting.SWbemLocator") 
Locator.Security_.AuthenticationLevel = 6 
set Service = locator.connectserver(strServer,"root/MicrosoftIISv2") 

'Get a collection of WMI apppools 
set APCollection = Service.InstancesOf("IISApplicationPool") 

For each APInstance in APCollection 
    If UCase(ApInstance.Name) = UCase("W3SVC/AppPools/" & strAppPoolName) Then 
     WScript.Echo "Recycling " & strServer & "/" & APInstance.Name 
      ' You can do any of these things depending you what you want to do. 
      APInstance.Recycle 
      APInstance.Stop 
      APInstance.Start 
     End If 
    Next 

如果你有某種命令行/批處理工具鏈要這個融入,可以通過執行命令行模式VBScript文件美其名曰:

CScript.exe \NoLogo MyScriptFile.vbs 

的\ NOLOGO開關刪除VBScript解釋的啓動消息和CScript.exe中手段運行它,調用WScript.Echo進入命令行,而不是一個彈出窗口。

相關問題