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.