Gestionando Pools de Aplicaciones IIS: Un Tutorial de PowerShell

Necesita estar atento a sus grupos de aplicaciones en el servidor web IIS? Aquí tiene una guía sobre cómo crear un grupo de aplicaciones en IIS con PowerShell.

¿Dónde acude cuando está gestionando una granja de servidores web IIS con potencialmente docenas o cientos de grupos de aplicaciones? ¡Scripts de PowerShell, por supuesto! Al utilizar el módulo WebAdministrationPowerShell que se instala como parte de IIS y un poco de remoting de PowerShell, puede crear, modificar y eliminar fácilmente grupos de aplicaciones a voluntad.

Veamos algunos ejemplos de cómo hacerlo.

Si nunca ha utilizado PowerShell para gestionar sus servidores IIS antes, su primera inclinación podría ser buscar un ComputerName en la mayoría de los cmdlets. Desafortunadamente, este no es el caso.

Para gestionar servidores IIS de forma remota, estamos obligados a utilizar el remoting de PowerShell con el cmdlet Invoke-Command. Aunque no es un obstáculo insalvable, hace que el código sea un poco más extenso de lo que podría ser. Esto no es para desanimarlo de gestionar servidores IIS remotos con PowerShell, sino más bien una información útil.

Relacionado: Invoke-Command: La mejor manera de ejecutar código de forma remota

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

NOTA: En adelante, construiremos código para ingresar en un scriptblock. Luego utilizaremos Invoke-Command para ejecutar este scriptblock en el servidor IIS remoto.

Listando Grupos de Aplicaciones de IIS con PowerShell

Para administrar los grupos de aplicaciones web, primero necesitaremos importar el módulo WebAdministration.

PS> Import-Module WebAdministration

Esto trae todos los cmdlets de IIS y crea la unidad IIS. Aquí es donde se realizará la mayor parte de la configuración del grupo de aplicaciones. Primero, verifiquemos si ya existen grupos de aplicaciones.

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

Crear nuevos grupos de aplicaciones de IIS con PowerShell

Parece que ya tengo uno llamado GHI. Tal vez quiera crear otro. Usar la unidad IIS hace que esto sea muy fácil. Simplemente use New-Item y especifique la ruta.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

Inspeccionar y modificar las propiedades del grupo de aplicaciones

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

Ahora que tienes un grupo de aplicaciones y puedes ver las propiedades, modifiquemos una propiedad. Tal vez quiera usar una versión específica de .NET con el grupo de aplicaciones. Nuevamente, usando la unidad IIS, puedo usar Set-ItemProperty para administrar grupos de aplicaciones como puedo hacerlo con el sistema de archivos, el registro, los certificados y todas las demás cosas que tienen una unidad de PowerShell.

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Usando Set-ItemProperty, puedes modificar casi todas las propiedades de un grupo de aplicaciones.

Eliminar grupos de aplicaciones con PowerShell

Finalmente, hemos terminado con nuestro grupo de aplicaciones y ahora necesitamos eliminarlo. Esta vez tenemos un cmdlet de PowerShell incorporado llamado Remove-WebAppPool. ¡Simplemente especifica el nombre y desaparecerá!

Remove-WebAppPool -Name MyAppPool

Todo este código que hemos estado utilizando se ejecutó localmente, pero ¿qué pasa si necesitas ejecutarlo en un servidor IIS remoto? Aquí es donde entra en juego PowerShell remoting. Para hacer esto, simplemente necesitamos agrupar todo este código en un bloque de script y luego usar Invoke-Command para ejecutarlo en el servidor remoto.

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

Aunque no es muy funcional, este código crearía un nuevo grupo de aplicaciones llamado MyAppPool, establecería una propiedad y luego la eliminaría. Notarás que estoy usando la variable $using. Dado que el código en el bloque de script se va a ejecutar en una computadora remota, esto es necesario para que PowerShell expanda esa variable y use el valor real de $appPoolName que se declaró localmente en nuestra computadora cliente.

Si quieres aprender más sobre la gestión de IIS en general, echa un vistazo a la página de Administración de IIS de Technet. Allí encontrarás todos los cmdlets incluidos en el módulo WebAdministration y cómo puedes utilizarlos.

Source:
https://adamtheautomator.com/powershell-iis-2/