Использование PowerShell для создания AppPool не устанавливает идентификатор AppPool - программирование
Подтвердить что ты не робот

Использование PowerShell для создания AppPool не устанавливает идентификатор AppPool

Я пытаюсь использовать PowerShell для создания пула приложений в IIS. После поиска в Интернете я создал следующий тест script:

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
}

Когда я запускаю script, имя пользователя и пароль не обновляются до значений, которые я установил.

Ниже приведены результаты двух блоков печати

#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

В IIS пул приложений показывает, что .Net Framework обновлена, но Identity по-прежнему настроен на ApplicationPoolIdentity. Он должен быть Domain\UserName.

enter image description here

Я администратор на компьютере, и я запускаю PowerShell в режиме администратора. Любые идеи относительно того, чего я могу потерять, чтобы заставить это работать?

4b9b3361

Ответ 1

Вам нужно будет изменить тип идентификации модели процесса, чтобы принять учетную запись пользователя вместо стандартного ApplicationPoolIdentity, и это можно сделать следующим образом:

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

Надеюсь, это поможет.

Ответ 2

Я столкнулся с этим после необходимости установить appPool на NetworkService, и для тех, кому это нужно, вот синтаксис для IIS 7.5, чтобы установить appPool в NetworkService

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

Примечание. В IIS 7.5 параметр NetworkService был переключен со значения 3 на значение 2.

Более подробную информацию о Process Model можно найти здесь: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

Ответ 3

выше никогда не работал у меня, это делало:

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

Ответ 4

У меня были аналогичные проблемы с установкой идентичности. Наконец, я проверил, что он устанавливает пароль:

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

И увидел только неполный пароль. Оказывается, я использовал двойные кавычки для параметра парольной строки, а пароль начинался с "$", что заставляло его анализировать как переменную.

Я сменил двойные кавычки на одинарные кавычки, и он сработал.

Ответ 5

В моей среде эти ответы не работали для меня. Я пытаюсь использовать MSA как идентификатор моего пула приложений. Я мог запускать все команды (@musaab-al-okaidi answer) без каких-либо ошибок в консоли, но после дальнейшего контроля ни одно имя пользователя не было связано с пулом приложений.

В итоге я изменил файл applicationHost.config напрямую (сначала создайте резервную копию!), чтобы добавить правильный идентификатор для пула приложений.

Для тех, кто не знает, applicationHost.config можно найти в: c:\Windows32\inetsrv\config

Внутри файла applicationHost.config найдите свою запись в пуле приложений и добавьте атрибут "имя пользователя", например:

<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>

Вы также можете установить пароль аналогичным образом (поскольку я использую MSA, здесь не нужно было устанавливать пароль, поскольку MSA "управляется" в AD и устанавливается в ящик IIS).

Я также остановил/запустил сервер IIS, чтобы убедиться, что новые конфигурации загружены.

Надеюсь, это поможет.