web-dev-qa-db-fra.com

Comment spécifier l'utilisateur et le mot de passe d'identité du pool d'applications à partir de PowerShell

J'ai eu beaucoup de difficultés à automatiser la configuration d'une application Web et à configurer IIS de manière appropriée avec l'identité du pool d'applications. Je le fais dans un script de déploiement d'application Web écrit dans PowerShell. Mon exigence est que j'ai besoin de mon script PowerShell pour définir l'utilisateur d'identité du pool d'applications sur un compte de service spécifique mydomain\svcuser et mot de passe. Voici l'exemple de code:

$pool = New-Item "IIS:\AppPools\MyAppPool" -Force
$svcuser = "mydomain\svcuser"
$pool.processModel.userName = $svcuser
$password = "somepassword"
$pool.processModel.password = $password
$pool.processModel.identityType = 3
$pool | Set-Item -ErrorAction Stop

Lorsque j'exécute cela, tout apparaît pour fonctionner correctement - aucune erreur n'est générée et le nom d'utilisateur de l'identité de l'application apparaît dans IIS - mais pour une raison quelconque, le mot de passe n'est pas défini correctement, voire pas du tout. Puisqu'il s'agit d'un mot de passe, je ne peux pas vérifier s'il a été défini, mais je peux en conclure que s'il l'est, il n'est pas défini correctement. Il n'authentifiera pas l'utilisateur du pool d'applications résultant tant que je n'entrerai pas manuellement et n'entrerai pas le mot de passe dans IIS. Par conséquent, l'application échoue après avoir été déployée sur le serveur Web et nécessite une intervention manuelle.

Est-ce que j'ai râté quelque chose?

23
paulyphonic

Vous feriez cela comme suit:

Import-Module WebAdministration
Set-ItemProperty IIS:\AppPools\app-pool-name -name processModel -value @{userName="user_name";password="password";identitytype=3}

Consultez ce document ici pour une explication et une référence du type d'indentité numérique pour le type d'utilisateur sous lequel vous exécuterez le pool d'applications: http://www.iis.net/configreference/system.applicationhost/applicationpools/ add/processmodel

42
Vitorrio Brooks

Après quelques expériences

Voici ma réponse, j'espère que cela vous aidera, j'ai travaillé sur IIS 8.5

$credentials = (Get-Credential -Message "Please enter the Login credentials including Domain Name").GetNetworkCredential()

$userName = $credentials.Domain + '\' + $credentials.UserName

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.identityType -Value SpecificUser 

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.userName -Value $username

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.password -Value $credentials.Password
6
vishnu