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.
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:
- 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.
- Copie contenido web muy sencillo en los directorios recién creados.
- Creación de un nuevo grupo de aplicaciones
- Cree un nuevo sitio, una nueva aplicación y dos directorios virtuales nuevos y asígnelos al grupo de aplicaciones recién creado.
- 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.