2010-02-11 18 views
6

Estoy usando IIS 6.0 y estoy buscando una forma de detener/iniciar el grupo de aplicaciones. Sé que hay una parada-appPool para Powershell en 7.0 pero usando 6.0. :-(Así que, ¿alguien tiene una secuencia de comandos PowerShell u otro exe línea de comandos que arranque/parada de la piscina aplicación?Start/Stop Pool de aplicaciones IIS6.0 con Powershell o la línea de comandos

Gracias.

+3

Parece que puede hacer esto desde WMI, por lo que solo necesita traducir esto a PowerShell: http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using- WMI-in-IIS-6.0.aspx. –

Respuesta

7

autorización aquí es, simplemente añadir un interruptor para parar el grupo de aplicación lo demás que se inicia desde ningún daño en comenzar un grupo de aplicaciones que ya se ha iniciado:

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

que podría estar interesado en esta biblioteca Powershell empecé a mantener:

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

Entre otras cosas, tiene un montón de cmdlets para la automatización de IIS6, por ejemplo puesta en IIS6AppPool, Nueva IIS6Website ...

espero que ayude!

0

Se puede crear una función para detener o iniciar el grupo de aplicaciones de forma remota de la siguiente manera:

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

Si alguien está buscando una herramienta de línea de comandos meramente que no requiere Powershell, tengo created such a thing basado en el información contenida en estas otras respuestas. Dado que la pregunta original busca específicamente posibles alternativas de línea de comandos, pensé que podría compartirla aquí.

El uso es bastante simple:

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

Source y binaries están disponibles en bitbucket. Que esto salve a alguien más unos minutos de rascarse la cabeza.

2

Si en Windows Server 2003 es más sencillo usar el script proporcionado iisapp.vbs

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

O dependiendo de su configuración (por defecto a CSCRIPT no WScriptl), simplemente

iisapp /a MyApp /r 

Y, por supuesto, es diferente en IIS7

1

Si desea hacer esto de forma remota, y/o en una máquina sin powershell puede modificar la publicación de la secuencia de comandos ed here.

Utiliza WMI para acceder y reciclar el grupo de aplicaciones, desde VBScript. Es un cambio trivial para detener/iniciar las agrupaciones en lugar de reciclarlas, solo necesita llamar al .Stop o .Start en el grupo de aplicaciones en cuestión.

La carne de la secuencia de comandos se parafrasea a continuación:

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 

Si tiene algún tipo de línea de comandos/cadena de herramientas de proceso por lotes que desea integrar este principio en, puede ejecutar un archivo de VBScript en el modo de línea de comandos llamando:

CScript.exe \NoLogo MyScriptFile.vbs 

el modificador \ NoLogo elimina los mensajes de inicio de intérprete de VBScript y ejecutarlo con medios CSCRIPT.EXE que llama a WScript.Echo ir a la línea de comandos en lugar de una ventana emergente.

Cuestiones relacionadas