Complemento de PowerShell: Creación de sitios web, aplicaciones web, directorios virtuales y pooles de aplicaciones

de Thomas Deml

En este tutorial aprenderá a crear sitios web, aplicaciones web, directorios virtuales y grupos de aplicaciones.

Introducción

El espacio de nombres de PowerShell de IIS consta de elementos como sitios web, aplicaciones, directorios virtuales y grupos de aplicaciones. Crear nuevos elementos de espacio de nombres y administrarlos es muy fácil mediante los cmdlets de PowerShell integrados.

Creación de Web-Sites

Si está familiarizado con PowerShell, sabe que el cmdlet New-Item se usa para crear nuevos elementos en los distintos espacios de nombres de PowerShell. El comando New-Item c:\TestDirectory crea un nuevo directorio del sistema de archivos por ejemplo (la mayoría de las personas usan el MD alias o MKDIR para New-Item , sin embargo). New-Item también se usa para crear nuevos Web-Sites dentro del espacio de nombres de PowerShell de IIS.

Parámetros

Especificar el nombre del directorio es el único argumento necesario al crear un nuevo directorio del sistema de archivos. Desafortunadamente, esto no es suficiente cuando se crea un sitio web. Se necesitan parámetros adicionales como la ruta de acceso del sistema de archivos y los enlaces de red para crear un sitio web. Este es el comando para crear un nuevo Web-Site seguido de un comando dir:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

El uso del argumento -physicalPath es bastante sencillo. Pero puede preguntarse por qué el argumento de -bindings es tan complejo.

La construcción usada es una tabla hash (vaya a aquí para obtener más información sobre las tablas hash de PowerShell). Dentro de los pares clave=valor de la tabla hash, se indica la configuración que refleja los atributos dentro de la sección vinculaciones de sitio de IIS.

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

Ahora esta es la razón por la que se usa una tabla hash: la configuración de IIS es completamente extensible (consulte de configuración aquí para obtener más detalles) con secciones y atributos adicionales. Puede imaginar que alguien extiende el <elemento de enlace> con atributos adicionales. Los pares clave-valor dentro de una tabla hash proporcionan la flexibilidad de incorporar estos nuevos atributos sin tener que volver a escribir completamente el complemento de PowerShell de IIS.

De acuerdo, la sintaxis es un poco compleja. Estamos pensando en ajustar algunas tareas típicas, como la creación de sitios con funciones o scripts adicionales en una versión preliminar técnica posterior.

Eliminación de sitios

Aquí se muestra cómo eliminar el sitio que acaba de crear.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Creación de aplicaciones web

Crear aplicaciones web es más fácil que crear sitios. Aquí vamos:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

El único parámetro que tiene que especificar es el tipo (-type) porque debajo de un Web-Site es posible que desee crear aplicaciones o directorios virtuales. Al especificar el parámetro -type, indique al complemento de IIS que cree una aplicación.

Para eliminar la aplicación, también puede usar Remove-Item.

Creación de directorios virtuales

Para crear un directorio virtual, también use el cmdlet New-Item. Vamos a crear un directorio virtual debajo del "sitio web predeterminado", pero y otro debajo de la aplicación web que creamos en el paso anterior.

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

Creación de grupos de aplicaciones

Pero es incluso más sencillo. La creación de una nueva instancia de AppPool solo requiere que se especifique el nombre.

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

Simple, ¿no? Ahora vamos a reunir esto en un escenario de un extremo a otro.

Integrándolo todo

En el siguiente escenario de un extremo a otro, ejecutaremos el siguiente paso:

  1. Cree un conjunto de directorios de sistema de archivos nuevos para los sitios, aplicaciones web y directorios virtuales que crearemos un poco más adelante.
  2. Copie contenido web muy sencillo en los directorios recién creados.
  3. Creación de un nuevo grupo de aplicaciones
  4. Cree un nuevo sitio, una nueva aplicación y dos directorios virtuales nuevos y asígnelos al grupo de aplicaciones recién creado.
  5. Solicite el contenido web a través del explorador web.

Paso 1: Crear nuevos directorios

Usamos el cmdlet New-Item para crear cuatro directorios de sistema de archivos nuevos. Ejecute los siguientes comandos (use "md" en lugar de New-Item si no desea especificar el parámetro -type):

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Paso 2: Copiar contenido

Ahora vamos a escribir contenido html simple en estos directorios:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Paso 3: Crear nuevo grupo de aplicaciones

Cree el nuevo grupo de aplicaciones "DemoAppPool" para el nuevo sitio si eliminó el que hemos creado en el ejemplo anterior.

New-Item IIS:\AppPools\DemoAppPool

Nota:

Se producirá un error en el cmdlet anterior si no se ha importado el módulo WebAdministration. Para ello, puede agregar el siguiente cmdlet como primer paso de un script que contiene el cmdlet anterior:

Import-Module "WebAdministration"

Paso 4: Crear nuevos sitios, aplicaciones web y directorios virtuales y asignarlo al grupo de aplicaciones

Aquí viene la carne. Creamos DemoSite, DemoApp y dos directorios virtuales: DemoVirtualDir1 se encuentra directamente debajo de DemoSite y DemoVirtualDir2 está debajo de DemoApp. Estamos asignando DemoSite y DemoApp a DemoAppPool creados en el paso anterior. DemoSite se asigna al puerto 8080 para no entrar en conflicto con el "Sitio web predeterminado".

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

Voila. Todo lo que queda es solicitar el contenido web.

Paso 5: Solicitar el contenido web

Por supuesto, puede abrir el explorador y escribir http://localhost:8080/ y todas las demás direcciones URL. Pero se trata de un tutorial de PowerShell y usaremos PowerShell para hacerlo mediante las clases WebClient de .NET:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

Si te sientes aventurero, también puedes usar el propio objeto internet Explorer:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

Resumen

En este tutorial ha aprendido a crear sitios web, aplicaciones web, directorios virtuales y grupos de aplicaciones con PowerShell. Se usaron características adicionales de PowerShell para crear un escenario funcional de un extremo a otro.