Как указать идентификатор пользователя и пароль пула приложений от PowerShell

У меня возникли трудности с автоматизацией настройки веб-приложения и правильной настройкой IIS с идентификатором пула приложений. Я делаю это в развертывании веб-приложений script, написанном в PowerShell. Мое требование состоит в том, что мне нужна моя PowerShell script, чтобы установить идентификатор пользователя пула приложений на конкретную учетную запись службы mydomain\svcuser и пароль. Вот пример кода:

$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

Когда я запускаю это, все работает правильно - никаких ошибок не возникает, и имя пользователя идентификатора приложения появляется в IIS, но по какой-то причине пароль не устанавливается правильно, если вообще. Поскольку это пароль, я не могу проверить, был ли он установлен, но я могу заключить, что он, если он есть, не установлен правильно. Он не будет аутентифицировать результирующего пользователя пула приложений до тех пор, пока я не войду вручную и не введу пароль в IIS. В результате приложение выходит из строя после развертывания на веб-сервере и требует ручного вмешательства.

Я что-то пропустил?

Ответ 1

Вы сделали бы это следующим образом:

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

См. этот документ здесь для объяснения, а также ссылку на числовое значение типа indentity для типа пользователя, в котором вы запустите пул приложений: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

Ответ 2

После нескольких экспериментов

Вот мой ответ, надеюсь, это поможет, я работал над 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