Запуск / остановка пула приложений IIS6.0 с помощью Powershell или командной строки - PullRequest
6 голосов
/ 12 февраля 2010

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

Спасибо.

Ответы [ 6 ]

7 голосов
/ 16 февраля 2010

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

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()
   }
}
4 голосов
/ 19 октября 2012

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

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

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

Исходные и двоичные файлы доступны в bitbucket. Пусть это спасет кого-то еще от нескольких минут царапин на голове.

2 голосов
/ 19 декабря 2012

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

2 голосов
/ 01 апреля 2010

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

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

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

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

1 голос
/ 22 января 2013

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

0 голосов
/ 24 мая 2011

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

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")      
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...