El TecnoBaúl de Kiquenet

Kiquenet boring stories

AppPools e IIS con Powershell

Posted by kiquenet en 24 enero 2014

Trabajando con Powershell y AppPools, para crear un Application Pool en:

Windows Server 2012 R2 con versión IIS 8.5

Windows Server 2008 R2 con versión IIS 7.5

Powershell 4.0

Algunos datos previos como la versión de Powershell:

$PSVersionTable.PSVersion.ToString()

Get-PSVersion

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" | Select -ExpandProperty PowerShellVersion

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine" | Select -ExpandProperty PowerShellVersion

Y la versión de IIS:

Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters | select MajorVersion,MinorVersion,PSPath

Versión de Microsoft.Web.Administration:

$IISAssembly = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$IISVersion = $IISAssembly.GetName().Version
$IISVersionString = [string]::Format("{0}.{1}.{2}.{3}", $IISVersion.Major, $IISVersion.Minor, $IISVersion.Build, $IISVersion.Revision)
$IISVersionString

Algunas anotaciones a tener en cuenta respecto a la sintaxis: 

   Set-Location IIS:\AppPools
   $appPool = New-Item IIS:\AppPools\$name 
   $appPool.processModel.identityType = $processModelIdentityType
   $appPool.managedRuntimeVersion = $managedRuntimeVersion
   $appPool.managedPipelineMode = ([int] [Microsoft.Web.Administration.ManagedPipelineMode]::$managedPipelineMode)
   $appPool | set-item

Otra forma podría ser utilizar Set-ItemProperty:

       Set-ItemProperty IIS:\AppPools\$AppPoolNameTest ProcessModel.IdentityType $processModelIdentityType
    Set-ItemProperty IIS:\AppPools\$name managedRuntimeVersion $managedRuntimeVersion
    Set-ItemProperty IIS:\AppPools\$name managedPipelineMode ([int] [Microsoft.Web.Administration.ManagedPipelineMode]::$managedPipelineMode)
    Set-ItemProperty IIS:\AppPools\$name enable32BitAppOnWin64 true

    Get-ItemProperty IIS:\AppPools\$AppPoolNameTest managedRuntimeVersion
    Get-ItemProperty IIS:\AppPools\$AppPoolNameTest managedPipelineMode
    Get-ItemProperty IIS:\AppPools\$AppPoolNameTest ProcessModel.IdentityType

O utilizarse el comando AppCmd.exe:

system32\inetsrv\appcmd.exe set AppPool $AppPoolName -processModel.identityType:ApplicationPoolIdentity

En Windows Server 2012 – IIS 8.5 funcionó así también, en cambio no aplicaba cambios en Windows Server 2008 – IIS 7.5:

$appPool | set-ItemProperty -Name "managedRuntimeVersion" -Value $managedRuntimeVersion
$appPool | Set-ItemProperty -Name "managedPipelineMode" -Value ([int] [Microsoft.Web.Administration.ManagedPipelineMode]::$managedPipelineMode)
$appPool | set-ItemProperty -Name "managedPipelineMode" -Value $managedPipelineMode

Además,

set-ItemProperty -Name "managedRuntimeVersion" -Value $managedRuntimeVersion

producía un error de casting a int (Set-ItemProperty : [Microsoft.Web.Administration.ManagedPipelineMode]::Integrated is not a valid value for Int32).

De la siguiente manera se consigue solucionar:

Set-ItemProperty -Name "managedPipelineMode" -Value ([int] [Microsoft.Web.Administration.ManagedPipelineMode]::$managedPipelineMode)

Si aparece el siguiente error indica que existe un Sitio Web con el mismo puerto:

start-webitem "Cannot create a file when that file already exists"

Útil además el manejo de versiones con PS:

$PSVersionTable.BuildVersion -ge [Version]"6.3.9421.0"

Una estupenda referencia: http://blogs.iis.net/jeonghwan/archive/2008/07/30/iis-powershell-user-guide-comparing-representative-iis-ui-tasks.aspx

Referencias:

https://gist.github.com/rasmuskl/1482665

https://gist.github.com/jstangroome/882528

http://learn.iis.net/page.aspx/434/powershell-snap-in-making-simple-configuration-changes-to-web-sites-and-application-pools/
http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

http://www.iis.net/configreference/system.applicationhost/applicationpools

http://www.iis.net/learn/manage/powershell/powershell-snap-in-creating-web-sites-web-applications-virtual-directories-and-application-pools
http://blog.analysisuk.com/post/Configuring-IIS-7-Bindings-with-IIS-PowerShell-Provider.aspx
http://www.iisonthe.net/2012/07/25/changing-application-pool-identities-in-iis-78-using-powershell/
http://stackoverflow.com/questions/4229082/powershell-how-do-i-set-the-net-framework-version-when-using-new-webapppool
http://stackoverflow.com/questions/9282063/powershell-error-when-trying-to-use-set-itemproperty-with-defaultapppool

http://stackoverflow.com/questions/7988306/how-to-use-an-enum-type-in-powershell-when-configuring-iis-using-the-powershell

http://www.powershellmagazine.com/2014/01/03/pstip-validating-version-numbers-without-regex/

http://stackoverflow.com/questions/435050/how-to-determine-installed-iis-version
http://stackoverflow.com/questions/16784587/finding-version-of-iis-using-powershell

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: