Запуск / остановка пула приложений IIS6.0 С помощью Powershell или командной строки

Я использую IIS 6.0 и ищу способ остановить/запустить пул приложений. Я знаю, что есть stop-appPool для powershell в 7.0, но с использованием 6.0. :- (Итак, у кого-нибудь есть сценарий powershell или другая командная строка exe, которая остановит/запустит пул приложений?

спасибо.

6 ответов


Ok вот он, я просто добавляю переключатель, чтобы остановить пул приложений, иначе он запускается, так как нет вреда в запуске пула приложений, который уже запущен:

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()
   }
}

Если кто-то ищет чисто инструмент командной строки, который не требует Powershell, у меня есть создал такую вещь на основе информации, содержащейся в этих других ответов. Поскольку исходный вопрос конкретно ищет возможные альтернативы командной строки, я подумал, что поделюсь им здесь.

использование довольно просто:

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

источник и файлы доступны на bitbucket. Может это спасет кого-то еще несколько минут почесывания в затылке.


вас может заинтересовать эта библиотека Powershell, которую я начал поддерживать:

psDeploy : http://rprieto.github.com/psDeploy/

среди прочего, у него есть много командлетов для автоматизации IIS6, например Пуск-IIS6AppPool, New-IIS6Website...

надеюсь, это поможет!


Если на 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


если вы хотите сделать это удаленно и / или на машине без PowerShell вы можете изменить сценарий написал здесь.

он использует 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 перейдите в командную строку, а не во всплывающее окно.


вы можете создать функцию для остановки или запуска пула приложений удаленно, как показано ниже:

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")      
    }
}