Si gestionas servidores Windows, es probable que hayas trabajado con Internet Information Services (IIS). Los sitios web son una de las principales características de IIS y, mediante PowerShell, ¡puedes gestionar y automatizar fácilmente IIS con scripts de PowerShell para IIS!
En este artículo, te introducirás a una nueva forma de gestionar IIS utilizando PowerShell. Utilizando las técnicas de este artículo, puedes construir fácilmente scripts de PowerShell para IIS y crear y gestionar sitios web en IIS.
Para gestionar IIS con PowerShell, necesitas uno de dos módulos de PowerShell: WebAdministration o IISAdministration. Este artículo aborda el módulo más moderno, IISAdministration. El video complementario a este artículo demuestra el antiguo módulo WebAdministration por si prefieres ver una alternativa.
Saber cómo gestionar incluso un sitio web simple para tu empresa o para el mundo en general te distinguirá de tus colegas. Las siguientes secciones en este artículo te ayudarán a aprender cómo crear y gestionar un sitio web en IIS. También aprenderás cómo gestionar los conjuntos de aplicaciones web mediante algunos cmdlets de PowerShell.
Módulos IISAdministration vs WebAdministration
Tienes dos opciones para gestionar IIS: WebAdministration o IISAdministration. Pero, ¿cuál deberías usar?
Si estás utilizando IIS 10.0 o superior, el nuevo módulo IISAdministration ofrece muchas mejoras respecto al antiguo módulo WebAdministration.
Aquí hay algunas cosas destacadas:
- Los cmdlets de IISAdministration ofrecen un mejor soporte para la canalización y escalan mejor.
- En comparación con los antiguos cmdlets de WebAdministration de IIS, el IISAdministration contiene un código más eficiente.
- Los cmdlets de IISAdministration son más simples y brindan acceso directo al administrador del servidor.
Este artículo se va a centrar en este módulo más reciente de IISAdministration.
Requisitos previos
Este artículo será práctico. Si planeas seguirlo, asegúrate de tener los siguientes requisitos previos en su lugar.
- Mínimo de Windows PowerShell 5.1 o PowerShell 6+
- Módulo de PowerShell IISAdministration de la PowerShell Gallery
- IIS 10.0 con la función de Windows habilitada

Se recomienda que estés familiarizado con lo básico de HTML. Habrá un paso en el que el uso de HTML juegue un papel en los ejemplos próximos. ¡Pero no te preocupes, podrás copiar y pegar el código!
Todos los ejemplos en esta publicación fueron creados utilizando IIS 10.0 en Windows 10 y PowerShell 7 Preview 6. Los cmdlets de IISAdministration son los mismos para Windows Server 2016 y 2019 y funcionan con Windows PowerShell 5.1.
Es todo para las herramientas utilizadas, ahora para los recursos necesarios para seguir adelante.
Instalando el Módulo de IISAdministration
Una vez que hayas cumplido con los requisitos previos, es hora de hacer algunos ajustes. Afortunadamente, no hay mucho que configurar, ya que el módulo PowerShell que necesitas (IISAdministration) está disponible de forma gratuita en la PowerShell Gallery.
Adelante y abre una consola de PowerShell elevada en tu servidor web e instala el módulo usando el siguiente comando.
Si no tienes acceso a internet, puedes descargar el módulo en otro host y copiarlo al directorio de tus módulos. Echa un vistazo a la documentación del comando
Save-Module
.
Descubriendo los Cmdlets Disponibles
Como con cualquier módulo de PowerShell con el que quizás no estés familiarizado, uno de los primeros cmdlets que debes usar para descubrir el inventario de cmdlets de un módulo es Get-Command
. Usar el comando Get-Command -Module 'IISAdministration'
como se muestra a continuación te permitirá ver qué es posible con este módulo.
Aunque aprenderás algunas acciones comunes para realizar en sitios web, estos comandos te darán una idea de todo lo demás que puedes hacer.

Ahora tienes una lista de cmdlets disponibles. Es hora de empezar a crear un sitio.
Creando Tu Primer Sitio Web
Tener un sitio web con el que trabajar, primero creemos un sitio web. Para hacerlo, el primer paso es crear un directorio para guardar el contenido web. Además, necesitarás un archivo HTML en ese directorio para que IIS lo muestre. Este directorio servirá como el directorio web que se utilizará en ejemplos posteriores.
Creando la Carpeta y Página Web
Primero, crea un directorio. Para hacerlo, puedes usar el cmdlet New-Item
. El código a continuación creará un directorio en C:\MiSitioWeb.
Puedes elegir cualquier ruta que desees con el código anterior. Para mantener las cosas simples, se usarán rutas genéricas.
Una vez que hayas creado el directorio, es hora de crear un archivo HTML que será la página de inicio de tu nuevo sitio web.
Ahora crea un archivo llamado index.html en el directorio C:\MiSitioWeb como se muestra a continuación.
Una vez que se haya creado el archivo, ábrelo en tu editor favorito y copia y pega el código a continuación en ese documento. Este HTML es una página simple que se utilizará para asegurarse de que IIS esté configurado correctamente cuando hayas terminado.
Creando un Sitio Web en IIS
Ahora es el momento de hacer que la página web recién creada esté disponible para que el mundo la vea. Para hacerlo, deberás crear un directorio virtual. El directorio virtual contiene todos los activos y recursos utilizados para la página que se está sirviendo.
De forma predeterminada, IIS crea un directorio virtual en C:\inetpub\wwwroot. El directorio contiene todos los activos y recursos de la página web predeterminada para IIS. También podrías usar el directorio predeterminado C:\inetpub\wwwroot para almacenar tus archivos, pero en estos ejemplos no se utilizará para mantener las rutas lo más cortas posible. Por eso estás utilizando C:\MyWebsite en su lugar.
Para crear un nuevo directorio virtual (sitio), usa el cmdlet New-IISSite
. Este cmdlet te permite crear el sitio web de IIS.
Para este artículo, crea un sitio web llamado Mywebsite que apunte al directorio C:\MyWebsite y que escuche en el puerto 8088. En el fragmento de código a continuación, puedes ver cómo hacerlo usando el cmdlet New-IISSite
.
La única parte que puede resultar confusa es el parámetro BindingInformation
. Este parámetro solo permite sintaxis de enlace. En este fragmento, New-IISSite
creará un sitio web que está enlazado a una dirección IP (*
es lo mismo que 127.0.0.1), el puerto TCP en el que escuchará y cualquier encabezado HTTP.
La sintaxis de enlace se puede explicar como protocolo, seguido de origen:Puerto:destino. En este ejemplo, has configurado IIS para que escuche las solicitudes HTTP de CUALQUIER () dirección IP en el puerto 8088 y el destino es localhost.*
Una vez que se haya creado el sitio, puedes ejecutar Get-IISSite
para inspeccionar cómo se ve, como se muestra a continuación.

De forma predeterminada, la configuración del sitio web se inicia y tu servidor web comienza a atender las solicitudes HTTP. Abre tu navegador favorito y ve a la máquina local apuntando al puerto 8088. Ahora deberías ver la página web que creaste anteriormente.

¡Felicidades! Acabas de configurar tu primer sitio web en IIS usando PowerShell!
Ahora que tienes un sitio web en funcionamiento, es hora de aprender a gestionar tu sitio web y el servidor IIS que lo aloja.
Gestión del Sitio Web en IIS
Una vez que un sitio web está en funcionamiento, sin duda necesitarás realizar acciones comunes como detener y iniciar el sitio. Por ejemplo, si el sitio necesita actualizaciones, a veces tendrás que reiniciar el sitio.
Para gestionar el sitio en PowerShell, tienes dos cmdlets para trabajar: Start-IISSite
y Stop-IISSite
. Estos dos cmdlets funcionan de manera similar a cómo operan los cmdlets Stop-Service
y Start-Service
.
Detener un sitio web es similar a detener un servicio de Windows. Estás impidiendo o permitiendo el acceso al sitio accesible por un protocolo que se sirve en un puerto único por IIS. Sin embargo, no estás deteniendo el host de IIS. Los sitios pueden detenerse e iniciarse de forma individual.
Detener un solo sitio
Para detener un sitio web de IIS, utilizarás el cmdlet Stop-IISSite
. Por defecto, el sitio que creaste anteriormente debería estar en estado Started
. Si detienes el sitio y, por lo tanto, evitas el acceso a MyWebsite, ejecuta Stop-IISSite
proporcionando el nombre como se muestra a continuación. Este código detiene el sitio MyWebsite para que no sea servido por IIS. Después de detener el sitio, ya no podrás acceder a él.
A continuación se muestra un ejemplo de inspección del estado del sitio web como Started
, deteniéndolo e inspeccionando nuevamente el estado. En este ejemplo, estás:
- Obteniendo el estado del sitio MyWebsite utilizando
Get-IISSite
. - Ejecutando el cmdlet
Stop-IISSite
contra el sitio MyWebsite. Este cmdlet cierra el acceso al sitio web. Como esta acción implica cambios operativos, se te pedirá confirmación. - Ejecutando nuevamente
Get-IISSite
para verificar que el sitio MyWebsite está detenido, al observar el estadoStopped
.

Detener todos los sitios
Anteriormente, detuviste un solo sitio, pero también puedes detener todos los sitios de manera igual de sencilla. Al utilizar el pipeline y redireccionar la salida de Get-IISSite
a Stop-IISSite
, PowerShell enumerará todos los sitios y los detendrá. En el siguiente ejemplo de código, se utiliza el parámetro opcional Verbose
para mostrar más información.

También puedes detener todos los sitios en IIS deteniendo el servicio W3SVC o World Wide Web Publishing Service. Al detener el servicio de Windows, se apaga IIS y se evita que se sirvan todos los sitios. Sin embargo, si haces esto, los sitios aún pueden mostrar que están en un estado Iniciado.
Iniciando un Solo Sitio
Supongamos que has realizado algunos cambios en el sitio MyWebsite y necesitas iniciarlo nuevamente. Es hora de usar el comando Start-IISSite
. Para hacerlo, simplemente especifica el nombre como lo hiciste al usar el cmdlet Stop-IISSite
.
Cuando se ejecuta, puedes inspeccionar el estado nuevamente usando Get-IISSite
. Cuando lo hagas, deberías ver una salida similar a la captura de pantalla a continuación.

Get-IISSite
and starting the site with Start-IISSite
Y ahora tu sitio debería estar disponible nuevamente en http://localhost:8088 si actualizas tu navegador.
Iniciando Todos los Sitios
Similar a cómo detuviste todos los sitios de ser publicados, puedes utilizar el pipeline para iniciar todos los sitios web en tu host de IIS también.
Nuevamente, estás obteniendo todos los sitios de IIS que se están sirviendo y utilizando el pipeline para iniciar cada uno. Tu salida debería lucir similar a la captura de pantalla a continuación.

Gestión de Vinculaciones Web
Es hora de realizar algunas tareas administrativas comunes en el sitio MyWebsite. Una de las tareas más comunes es cambiar las vinculaciones web.
Cuando creaste el sitio MyWebsite, utilizaste la sintaxis de enlace *:8088:
. Esta sintaxis representaba la escucha en la dirección IP 127.0.0.1, en el puerto 80 sin encabezados HTTP. Digamos ahora que has decidido que en cambio quieres que el sitio escuche en el puerto 9000. Para hacer esto, necesitarás modificar los enlaces del sitio.
Inspeccionar los Enlaces Existentes
Antes de poder cambiar los enlaces del sitio, primero debes inspeccionar la configuración actual. Una forma de hacerlo es inspeccionando la propiedad Binding
devuelta por Get-IISSite
. Observa en el siguiente fragmento de código cómo hacerlo. En el fragmento, Get-IISSite
está consultando el sitio MyWebSite, y solo está devolviendo la propiedad Bindings
.
Cuando inspeccionas solo la propiedad Bindings
, PowerShell devolverá un objeto con algunas piezas de información diferentes como se muestra a continuación.

Si quieres ver solo la información de enlace, puedes hacer referencia específicamente a la propiedad bindingInformation
como se muestra a continuación.

Eliminar Enlaces
Si deseas cambiar en qué puerto un sitio escucha, primero debes eliminar el enlace existente que lo vincula a ese puerto. Para eliminar el enlace, primero debes detener el sitio.
Una vez que el sitio esté detenido, ahora puedes eliminar el enlace existente que vincula el sitio MyWebsite al puerto 8088. Para hacerlo, puedes usar el Remove-IISSiteBinding
cmdlet.
Para eliminar el enlace para MyWebsite como se definió anteriormente, a continuación puedes ver un ejemplo de cómo usar Remove-IISSiteBinding
para hacer precisamente eso. A continuación, estás proporcionando el nombre del sitio y especificando la sintaxis de enlace descubierta anteriormente.
Cuando ejecutes el código, se te pedirá que confirmes tu decisión, ya que estás haciendo algo destructivo como se muestra a continuación.

No hay límite en la cantidad de enlaces que puedes tener. Puedes mantener fácilmente el enlace original y agregar el puerto TCP 9000 como un nuevo enlace.
Ahora puedes ejecutar Get-IISSite -Name 'MyWebsite'
nuevamente. Ahora verás que la información de enlace ha sido eliminada, como se muestra por el valor en blanco bajo Bindings
.

A pesar de que el sitio está publicado, IIS no tiene forma de saber cómo dirigir el tráfico a tu sitio.
Es importante tener al menos un enlace asignado a tu sitio. Para mostrarte la importancia, intenta navegar a http://localhost:8088/index.html nuevamente. Si estabas usando el navegador web Mozilla Firefox, es posible que veas este mensaje a continuación.

Creación de Nuevos Enlaces
En la última sección, eliminaste el único enlace del sitio MyWebsite tenía. Si bien esto rompió el sitio, es solo un problema temporal. Es hora de corregir este problema creando un nuevo enlace.
Para crear un nuevo enlace, usa el cmdlet New-IISSiteBinding
. Dado que ahora necesitas enlazar el puerto 9000 al sitio MyWebsite, especifica la sintaxis de enlace correcta como se muestra a continuación.
Una vez que hayas creado el nuevo enlace, reinicia el sitio nuevamente con Start-IISSite
. Recuerda que para crear este nuevo enlace, IIS requiere que el sitio se detenga.
Cuando el sitio se reinicie, ahora deberías poder acceder a él en el puerto 9000. Para verificar esto, abre tu navegador web preferido y ve a http://localhost:9000. Ahora deberías ver que la página web funciona nuevamente en el puerto 9000.

Eliminar un sitio web
Si acabas de seguir un tutorial y no planeas mantener el sitio MyWebsite permanentemente, es hora de limpiarlo. Para eliminar un sitio, utiliza el cmdlet Remove-IISSite
.
Eliminar un sitio de IIS puede ser una tarea peligrosa, especialmente si estás eliminando un sitio en IIS que aloja otros sitios web de producción. Para verificar que estás eliminando el sitio correcto, se recomienda utilizar el común parámetro de PowerShell WhatIf
. Este parámetro te permite inspeccionar lo que habría sucedido si el comando realmente se hubiera ejecutado.
Puedes ver un ejemplo de cómo eliminar el sitio MyWebsite usando el parámetro WhatIf
a continuación.

-WhatIf
!Si todo parece estar bien, suelta la barra de seguridad y vuelve a ejecutar el código, esta vez sin el parámetro -WhatIf
.
Cuando utilizas el cmdlet
Remove-IISSite
, el sitio no se elimina. Se elimina de la configuración de IIS. Los archivos del sitio web permanecen intactos.
Resumen
En este artículo, has aprendido a crear un sitio web usando el módulo IISAdministration. Has visto cómo realizar operaciones administrativas necesarias para mantener un sitio web. ¡Ahora sabes lo suficiente de los conceptos básicos para trabajar con cualquier host IIS moderno usando PowerShell!