windows iis powershell application-pool

windows - Usar PowerShell para crear AppPool no configura la identidad de AppPool



iis application-pool (5)

Estoy intentando utilizar PowerShell para crear un grupo de aplicaciones en IIS. Después de buscar en la web, creé el siguiente script de prueba:

Import-Module WebAdministration $siteName = "TestAppPool" $userAccountName = "Domain/UserName" $userAccountPassword = "MyPassword" if(!(Test-Path ("IIS:/AppPools/" + $siteName))) { $appPool = New-Item ("IIS:/AppPools/" + $siteName) #Display Default AppPool Settings "AppPool = " + $appPool "UserName = " + $appPool.processModel.userName "Password = " + $appPool.processModel.password "Runtime = " + $appPool.managedRuntimeVersion $appPool.processModel.userName = $userAccountName $appPool.processModel.password = $userAccountPassword $appPool.managedRuntimeVersion = "v4.0" $appPool | Set-Item #Display Updated AppPool Settings "AppPool = " +$appPool "UserName = " + $appPool.processModel.userName "Password = " + $appPool.processModel.password "Runtime = " + $appPool.managedRuntimeVersion }

Cuando ejecuto el script, el nombre de usuario y la contraseña no se actualizan a los valores que establecí.

Aquí están los resultados de los dos bloques de impresión

#Display Default AppPool Settings AppPool = Microsoft.IIs.PowerShell.Framework.ConfigurationElement UserName = Password = Runtime = v2.0 #Display Updated AppPool Settings AppPool = Microsoft.IIs.PowerShell.Framework.ConfigurationElement UserName = Password = Runtime = v2.0

Al buscar en IIS, el grupo de aplicaciones muestra que .Net Framework se actualizó, pero la identidad aún está configurada en ApplicationPoolIdentity. Debe ser Domain / UserName.

Soy administrador de la máquina y estoy ejecutando PowerShell en modo Administrador. ¿Alguna idea sobre lo que me puedo perder para hacer que esto funcione?


Tendrá que cambiar el tipo de identidad del Modelo de proceso para aceptar una cuenta de usuario en lugar de la ApplicationPoolIdentity predeterminada, y esto se puede hacer de la siguiente manera:

Set-ItemProperty -Path IIS:/AppPools/TestAppPool -Name processmodel.identityType -Value 3 Set-ItemProperty -Path IIS:/AppPools/TestAppPool -Name processmodel.username -Value Domain/UserName Set-ItemProperty -Path IIS:/AppPools/TestAppPool -Name processmodel.password -Value MyPassword

Espero que esto ayude.


Me encontré con esto después de tener que configurar el apppool en NetworkService y para cualquier otra persona que necesite hacer esto, aquí está la sintaxis de IIS 7.5 para configurar su apppool en NetworkService

$pool = get-item("IIS:/AppPools/YOURAPPPOOLNAME"); $pool | Set-ItemProperty -Name "ProcessModel.IdentityType" -Value 2

Nota: En IIS 7.5, NetworkService se cambió del valor 3 al valor 2.

Puede encontrar más información sobre el Process Model aquí: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel


arriba nunca funcionó para mí, esto hizo:

import-module webadministration $pool = Get-Item "IIS:/AppPools/apppoolname" $pool.processmodel.identityType = 3 $pool.processmodel.username = "username" $pool.processmodel.password = "password" $pool | set-item


Estaba teniendo problemas similares para establecer la identidad. Finalmente, verifiqué para ver a qué estaba estableciendo la contraseña:

Get-ItemProperty $appPool -name "processmodel.password"

Y solo vi una contraseña parcial. Resulta que estaba usando comillas dobles para el parámetro de cadena de contraseña, y la contraseña comenzó con ''$'', lo que hizo que se analizara como una variable.

Cambié las comillas dobles a comillas simples y funcionó.


En mi entorno, estas respuestas no me funcionaban. Intento utilizar un MSA como identidad para mi grupo de aplicaciones. Pude ejecutar todos los comandos (la respuesta de @musaab-al-okaidi) sin ningún error en la consola, pero luego de una inspección adicional, no se asoció ningún nombre de usuario con el grupo de aplicaciones.

Terminé modificando el archivo applicationHost.config directamente (¡primero crea una copia de seguridad!) Para agregar la identidad adecuada para el grupo de aplicaciones.

Para aquellos que no lo sepan, la aplicación c:/Windows32/inetsrv/config se puede encontrar en: c:/Windows32/inetsrv/config

Dentro del archivo applicationHost.config , busque la entrada de su grupo de aplicaciones y agregue un atributo ''username'', como el siguiente:

<system.applicationHost> <applicationPools> <add name="someAppPool" autoStart="true" managedRuntimeVersion="4.0" startMode="AlwaysRunning"> <processModel identityType="SpecificUser" userName="domain/username$" idleTimeout="00:00:00" /> </add> </applicationPools> </system.applicationHost>

También puede establecer la contraseña de manera similar (ya que estoy usando un MSA, no hubo necesidad de establecer la contraseña aquí, ya que el MSA está ''administrado'' en AD e instalado en el cuadro de IIS).

También paré / inicié el servidor IIS, solo para asegurarme de que las nuevas configuraciones estaban cargadas.

Espero que eso ayude.