Запуск / остановка пула приложений 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")
}
}