Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
por Tim Ammann
Introducción
La administración de la aplicación y grupos de aplicaciones en IIS 7.0 y versiones posteriores se puede realizar con cierta facilidad mediante WMI de scripting. En este artículo se describe cómo realizar, con solo unas pocas líneas de VBScript, las siguientes tareas:
- Cree y enumere aplicaciones
- Cree, configure y elimine grupos de aplicaciones
- Inicie, detenga y recicle grupos de aplicaciones
- Visualice el estado de los grupos de aplicaciones
- Enumere de todos los grupos de aplicaciones en el servidor
Primeros pasos
Asegúrese de que IIS y el scripting están habilitados.
- Si usa Windows Vista, abra panel de control, Programas y características y, a continuación, características de Windows. En "Herramientas de administración web", seleccione "Scripts y herramientas de administración de IIS" para habilitar el scripting.
- Si usa Windows Server® 2008, abra el Administrador del servidor. Use el Asistente para agregar roles para instalar el servidor web de IIS 7.0. En la página Seleccionar servicios de rol, en la sección Herramientas de administración, seleccione "Scripts y herramientas de administración de IIS".
Ejecute los comandos como administrador. Para abrir la ventana del símbolo del sistema con privilegios elevados, haga clic en Inicio, seleccione Todos los programas, Accesorios, haga clic con el botón secundario en Símbolo del sistema y, a continuación, haga clic en Ejecutar como administrador. Si abre un shell de comandos como administrador, todas las aplicaciones que ejecute desde ese shell de comandos se ejecutarán como administrador.
Guarde los archivos de script en formato de texto con una extensión .vbs. Se pueden ejecutar en el símbolo del sistema mediante la sintaxis "cscript.exe <scriptname>.vbs".
Antes de empezar, realice una copia de seguridad del archivo System32\inetsrv\config\applicationhost.config con la herramienta AppCmd. La copia de seguridad le permitirá restaurar IIS a su estado original simplemente copiando la versión original en la posterior. Para realizar una copia de seguridad, siga estos pasos:
a. Abra una ventana del símbolo del sistema con permisos elevados.
b. Escriba
%Windir%\system32\inetsrv\
cdc. Escriba appcmd add backup backupName para hacer una copia de seguridad del archivo ApplicationHost.config, donde backupName es el nombre que especifique para la copia de seguridad. Un directorio con el nombre de copia de seguridad que especifique se creará en el directorio
%Windir%\system32\inetsrv\backup
. Si no especifica un nombre, appcmd generará automáticamente un nombre de directorio con la fecha y hora actuales.
Creación y enumeración de aplicaciones
Las aplicaciones se pueden crear y enumerar fácilmente mediante scripting WMI en IIS.
Crear una aplicación
Para crear una aplicación, IIS usa el nuevo método Create de la aplicación. Se trata de un método estático que toma dos parámetros de cadena necesarios: ApplicationPath y SiteName. ApplicationPath define la ruta de acceso virtual para la nueva aplicación y SiteName contiene el nombre del sitio web en el que se creará la aplicación. Un tercer parámetro, PhysicalPath, es opcional y especifica la ruta de acceso del directorio de la aplicación en el disco.
ApplicationPath y SiteName son propiedades clave y no se pueden cambiar después de crear la aplicación (observe que ApplicationPath se denomina "Ruta de acceso virtual" en la interfaz de usuario).
El siguiente script crea una nueva aplicación denominada "NewApp" en el sitio web predeterminado. Observe cómo se llama al método Create en la definición de clase Application. Copie el script en el Bloc de notas y guárdelo con el nombre de archivo AppCreate.vbs.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Define the Path, SiteName, and PhysicalPath for the new application.
strApplicationPath = "/NewApp"
strSiteName = "Default Web Site"
strPhysicalPath = "D:\inetpub\NewApp"
' Create the new application
oWebAdmin.Get("Application").Create _
strApplicationPath, strSiteName, strPhysicalPath
Para ejecutar el script, abra una ventana del símbolo del sistema con privilegios elevados y vaya al directorio en el que guardó el archivo AppCreate.vbs. Ejecute el script escribiendo lo siguiente en la ventana del símbolo del sistema que acaba de abrir:
Cscript.exe AppCreate.vbs
Recuerde que ApplicationPath y SiteName deben especificarse para que Create se complete correctamente. También quiere especificar la propiedad PhysicalPath. Si especifica un directorio inexistente para el parámetro PhysicalPath, el directorio no se creará automáticamente. El script finalizará silenciosamente y, de hecho, aparecerá un nuevo nodo para la aplicación en el Administrador de IIS. Sin embargo, al intentar abrir el nodo de la nueva aplicación, recibirá el error "No se pudo encontrar una parte de la ruta de acceso <ruta de acceso>".
Enumerando aplicaciones
Después de crear la aplicación, puede mostrar fácilmente sus propiedades a través del script WMI.
En el siguiente VBScript se muestra el nombre del sitio, la ruta de acceso de la aplicación, el grupo de aplicaciones y los protocolos habilitados para cada aplicación de un servidor. El script usa el método InstancesOf de WMI para recuperar todas las aplicaciones y, a continuación, recorre en iteración sus propiedades.
Copie el código en el Bloc de notas y guárdelo con el nombre de archivo AppEnumerate.vbs.
' Connect to the WMI WebAdministration namespace.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Use InstancesOf to retrieve the applications.
Set oApps = oWebAdmin.InstancesOf("Application")
' Iterate through the applications.
For Each oApp In oApps
WScript.Echo " Web site/Application: " & oApp.SiteName & oApp.Path
WScript.Echo " Application Pool: " & oApp.ApplicationPool
WScript.Echo " Enabled protocol(s): " & oApp.EnabledProtocols
WScript.Echo
Next
Para ejecutar el script, abra una ventana del símbolo del sistema con privilegios elevados y vaya al directorio en el que guardó el archivo AppEnumerate.vbs. Ejecute el script escribiendo lo siguiente en la ventana del símbolo del sistema que acaba de abrir:
Cscript.exe AppEnumerate.vbs
A continuación, verá cómo crear, configurar y administrar los grupos de aplicaciones que hospedan las aplicaciones web.
Crear y configurar grupos de aplicación
En esta sección se presentan algunas tareas básicas pero importantes que puede realizar con grupos de aplicaciones mediante scripting WMI. Los grupos de aplicaciones conectan una o varias aplicaciones a uno o varios procesos de trabajo. Los grupos de aplicaciones ayudan a separar las aplicaciones entre sí y este aislamiento aumenta su seguridad y confiabilidad.
Creación de un grupo de aplicaciones
Para crear un grupo de aplicaciones, IIS usa el método Create de la clase ApplicationPool. Este método estático tiene dos parámetros: el primero, AppPoolName, es una cadena necesaria que especifica el nombre del nuevo grupo de aplicaciones; el segundo, AutoStart, es un valor booleano opcional.
AutoStart, que es true de forma predeterminada, especifica que el grupo de aplicaciones que cree se iniciará después de crearlo y se iniciará automáticamente cuando se inicie IIS. Si establece AutoStart en false, debe iniciar el grupo de aplicaciones manualmente. Sin embargo, deshabilitar el inicio automático es útil cuando desea realizar cambios de configuración o contenido en una aplicación del grupo de aplicaciones antes de que se inicie el grupo de aplicaciones.
En el ejemplo siguiente se crean dos grupos de aplicaciones, "NewAppPool" y "OneMoreAppPool" con solo tres líneas de código. Observe cómo se llama al método Create, no en una instancia de ApplicationPool, sino en su definición de clase.
Copie el script en el Bloc de notas y guárdelo con el nombre de archivo AppPoolCreate.vbs.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
oWebAdmin.Get("ApplicationPool").Create("NewAppPool")
oWebAdmin.Get("ApplicationPool").Create("OneMoreAppPool")
Para ejecutar el script, abra una ventana del símbolo del sistema con privilegios elevados y vaya al directorio en el que guardó el archivo AppPoolCreate.vbs. Ejecute el script escribiendo lo siguiente en la ventana del símbolo del sistema que acaba de abrir:
Cscript.exe AppPoolCreate.vbs
Creación de grupos de aplicaciones de forma interactiva
Con solo unas cuantas líneas de código más, puede crear un script práctico que genere un cuadro de entrada para que pueda crear grupos de aplicaciones de forma interactiva. Como antes, copie y pegue el script en el Bloc de notas, guárdelo como un archivo con una extensión .vbs y ejecute el archivo mediante cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
strNewAppPoolName = InputBox("Enter the name for the new application pool.")
If strNewAppPoolName <> "" Then
oWebAdmin.Get("ApplicationPool").Create(strNewAppPoolName)
End If
Asignación de una aplicación a un grupo de aplicaciones
Ahora que ha creado un grupo de aplicaciones, asígnele una aplicación. Es fácil cambiar el grupo de aplicaciones de una aplicación mediante el script WMI, pero hay dos cosas importantes que recordar. En primer lugar, dado que IIS no comprueba si el grupo de aplicaciones que especifique realmente existe, asegúrese de crearlo primero. En segundo lugar, para guardar el cambio de asignación del grupo de aplicaciones, recuerde usar el método Put_. La clase Application hereda el método Put_ de WMI.
El siguiente script cambia el grupo de aplicaciones de la aplicación "/NewApp" en el sitio web predeterminado a "NewAppPool". Como antes, copie y pegue el script en el Bloc de notas. Guárdelo con el nombre de archivo AppPoolAssign.vbs y, a continuación, ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Retrieve the NewApp application.
Set oApp = oWebAdmin.Get("Application.SiteName='Default Web Site',Path='/NewApp'")
WScript.Echo "Application Web site and Path: '" & oApp.SiteName & oApp.Path & "'"
WScript.Echo "Old application pool: " & oApp.ApplicationPool
WScript.Echo
' Specify the new application pool name.
oApp.ApplicationPool = "NewAppPool"
' Save the change.
oApp.Put_
' Display the new application pool name.
WScript.Echo
WScript.Echo "New application pool: " & oApp.ApplicationPool
Eliminación de un grupo de aplicaciones específico
Si desea deshacerse del grupo de aplicaciones antiguo por completo, puede usar el método Delete_ que la clase ApplicationPool hereda de WMI.
Este siguiente script elimina el grupo de aplicaciones denominado "OneMoreAppPool" que creó anteriormente. Como antes, copie y pegue el script en el Bloc de notas. Guárdelo con el nombre de archivo AppPoolDelete.vbs y, a continuación, ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPools = oWebAdmin.InstancesOf("ApplicationPool")
For Each oAppPool In oAppPools
If oAppPool.Name = "OneMoreAppPool" Then
oAppPool.Delete_
Exit For
End If
Next
Establecer el grupo de aplicaciones predeterminado para un sitio web
Si desea que el grupo de aplicaciones sea el grupo de aplicaciones predeterminado para todas las aplicaciones de un sitio web, use la propiedad ApplicationDefaults.ApplicationPool del objeto Site. Una vez más, use el método Put_ en el objeto Site para guardar el cambio.
El siguiente script establece el grupo de aplicaciones predeterminado para el sitio web predeterminado en "NewAppPool" que creó anteriormente. Copie y pegue el script en el Bloc de notas, guárdelo con el nombre de archivo SetAppPoolDefault.vbs y, a continuación, ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Retrieve the default Web site.
Set oSite = oWebAdmin.Get("Site.Name='Default Web Site'")
' Specify the new default application pool name.
oSite.ApplicationDefaults.ApplicationPool = "NewAppPool"
' Save the change.
oSite.Put_
Administración de grupos de aplicaciones
Puede iniciar, detener y reciclar y crear grupos de aplicaciones fácilmente mediante scripting WMI. En esta sección se muestra cómo ejecutar cada una de estas tareas. Además, también muestra cómo puede obtener el estado actual de un grupo de aplicaciones.
Detener un grupo de aplicaciones
El método ApplicationPool.Stop de IIS corresponde al método IIsApplicationPool.Stop en IIS 6.0.
La detención de un grupo de aplicaciones se puede realizar en tres líneas de script. Copie y pegue el script siguiente en el Bloc de notas, guárdelo con el nombre de archivo AppPoolStop.vbs y, a continuación, ejecútelo con cscript.exe.
' Connect to the WMI WebAdministration namespace.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Specify the application pool.
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name='DefaultAppPool'")
' Stop the application pool.
oAppPool.Stop
Iniciar un grupo de aplicaciones
IIS tiene un método ApplicationPool.Start que corresponde al método IIsApplicationPool.Start en IIS 6.0.
Iniciar un grupo de aplicaciones es igualmente sencillo. Copie y pegue el script siguiente en el Bloc de notas, guárdelo con el nombre de archivo AppPoolStart.vbs y, a continuación, ejecútelo con cscript.exe.
' Connect to the WMI WebAdministration namespace.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
' Specify the application pool.
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name='DefaultAppPool'")
' Start the application pool.
oAppPool.Start
Reciclar un grupo de aplicaciones
El método ApplicationPool.Recycle de IIS corresponde al método IIsApplicationPool.Recycle en IIS 6.0.
El reciclaje de un grupo de aplicaciones sigue el mismo patrón que los ejemplos anteriores; la única advertencia es que el método Recycle solo funciona en un grupo de aplicaciones que ya se ha iniciado.
Copie y pegue el script siguiente en el Bloc de notas, guárdelo con el nombre de archivo AppPoolRecycle.vbs y, a continuación, ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name='DefaultAppPool'")
' Recycle the application pool.
oAppPool.Recycle
Obtención del estado de un grupo de aplicaciones
El estado en tiempo de ejecución de un grupo de aplicaciones se puede recuperar mediante el método GetState del objeto ApplicationPool, que devuelve un valor de enumeración de 0 a 4. En el ejemplo siguiente se muestra lo que significan estos valores y cómo puede usar una función auxiliar sencilla para mostrarlos. Este método no tiene ningún homólogo directo en IIS 6.0.
Copie y pegue este script en el Bloc de notas, guárdelo con el nombre de archivo AppPoolState.vbs y ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name='DefaultAppPool'")
' Get the application pool's name and its state.
WScript.Echo oAppPool.Name & " is " & _
GetStateDescription(oAppPool.GetState) & "."
' The helper function translates the return value into text.
Function GetStateDescription(StateCode)
Select Case StateCode
Case 0
GetStateDescription = "Starting"
Case 1
GetStateDescription = "Started"
Case 2
GetStateDescription = "Stopping"
Case 3
GetStateDescription = "Stopped"
Case 4
GetStateDescription = "Unknown"
Case Else
GetStateDescription = "Undefined value."
End Select
End Function
Tenga en cuenta que el valor devuelto reflejará el estado del grupo de aplicaciones en el momento en que se ejecutó el script. Por supuesto, no se actualizará en tiempo real. Si lo necesita, programe una tarea para ejecutar el script para informar sobre el estado de un grupo de aplicaciones o grupos concretos a intervalos establecidos.
Enumeración de los grupos de aplicaciones en un servidor
Puede usar el método InstancesOf de WMI para recuperar todos los grupos de aplicaciones y, a continuación, recorrerlos en iteración para mostrar sus propiedades. En el código siguiente se muestran los grupos de aplicaciones y su modo (Integrado o ISAPI).
Copie y pegue el script siguiente en el Bloc de notas, guárdelo con el nombre de archivo ListAppPools.vbs y, a continuación, ejecútelo con cscript.exe.
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPools = oWebAdmin.InstancesOf("ApplicationPool")
For Each oAppPool In oAppPools
WScript.Echo "Application pool name: " & oAppPool.Name
If oAppPool.ManagedPipelineMode = 0 Then
sAppPoolMode = "Integrated"
ElseIf oAppPool.ManagedPipelineMode = 1 Then
sAppPoolMode = "ISAPI"
End if
WScript.Echo "Application pool mode: " & sAppPoolMode
WScript.Echo
Next
La salida debe ser similar a la siguiente:
Application pool name: DefaultAppPool
Application pool mode: Integrated
Application pool name: Classic .NET AppPool
Application pool mode: ISAPI
Conclusión
En este artículo se presenta información sobre cómo realizar las siguientes tareas básicas con scripting WMI:
- Cree y enumere aplicaciones
- Cree, configure y elimine grupos de aplicaciones
- Inicie, detenga y recicle grupos de aplicaciones
- Visualice el estado de los grupos de aplicaciones
- Enumere de todos los grupos de aplicaciones en el servidor
Las clases Application y ApplicationPool tienen características adicionales que no se tratan en este artículo.