Cuando tenemos que administrar un servidor web de cierta entidad, con muchos dominios, grupos de aplicaciones, etc., e interesa realizar alguna operación en lote sobre un grupo de ellos, no es necesario que nos pasemos media mañana haciendo click, botón derecho, propiedades, avanzadas… En esos casos es cuando vale la pena utilizar Appcmd utilidad provista con IIS 7 (Windows 2008).

La utilidad está en %windir%\system32\inetsrv, aunque también hay una pequeña aplicación de interfaz bastante simple llamada AppcmdUI, pero que nos ofrece la posibilidad de ir autocompletando el comando que vamos generando, lo que suele ser una ayuda, sobre todo al principio.

Una de las capacidades más notorias que nos ofrece Appcmd es el pipelining, lo que nos permite encadenar la salida de un comando como entrada del siguiente, consiguiendo así actuar sobre varios objetos fácilmente. Me explico con un ejemplo práctico:

  1. Obtenemos una lista de los grupos de aplicaciones:
    appcmd apppool list
  2. Modificamos a 30 minutos el tiempo de inactividad de un grupo de aplicaciones previo a su reciclaje:
    appcmd set apppool "pedazodeseñoraweb.es" /processModel.idleTimeout:00:30:00

Si juntamos estos dos comandos, podemos hacer que el tiempo de inactividad de todos los grupos de aplicaciones pase a ser de 30 minutos, con:

appcmd list apppool /xml | appcmd set apppool /in /processModel.idleTimeout:00:30:00

Obsérvese que la salida del primer comando se ha establecido para que se obtenga como XML, con /xml, y que se ha especificado que la entrada del segundo provendrá de su entrada estándar y en formato XML, con /in. Por último, se han unido la salida del primero con la entrada del primero mediante una tubería (|).

Así, podemos hacer cosas chachis, como reciclar todos los procesos, modificar en lote la configuración de los que empiecen por una cadena de texto dada, listar todas las copias de seguridad existentes…