2013-02-14 21 views
16

Próbuję użyć PowerShell do utworzenia puli aplikacji w IIS. Po poszukiwaniach w internecie, stworzyłem poniższy skrypt testowy:Użycie PowerShell do utworzenia AppPool nie ustawia tożsamości AppPool

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 
} 

Kiedy uruchomić skrypt, nazwa użytkownika i hasło nie są aktualizowane do wartości ustawić.

Oto wyniki z dwóch blokach drukowania

#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 

patrząc w IIS, aplikacja Basen pokazuje .NET Framework został zaktualizowany, jednak tożsamość jest nadal ustawiony na ApplicationPoolIdentity. Powinna to być Domena \ NazwaUżytkownika.

enter image description here

Jestem adminem na maszynie, a Używam PowerShell w trybie administratora. Jakieś pomysły na temat tego, czego może mi brakować, aby to zadziałało?

Odpowiedz

22

Musisz zmienić proces typ tożsamości modelu zaakceptować konta użytkownika zamiast domyślnego ApplicationPoolIdentity i można to zrobić w następujący sposób:

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 

Mam nadzieję, że to pomaga.

4

natknąłem to po konieczności ustawić appPool do NetworkService i dla nikogo innego, która chciałaby to zrobić, tutaj jest składnia dla IIS 7.5, aby ustawić appPool do NetworkService

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

Uwaga: W IIS 7,5, NetworkService został przełączony z wartości 3 do wartości 2.

Więcej informacji o Process Model można znaleźć tutaj: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

2

powyżej nigdy nie pracował dla mnie, to tak:

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

miałem podobne problemy określające tożsamość. Na koniec sprawdziłem, aby ustawić hasło:

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

Widziałem tylko częściowe hasło. Okazuje się, że używałem podwójnych cudzysłowów dla hasła param, a hasło zaczynało się od "$", co spowodowało, że został sparsowany jako zmienna.

Zmieniłem podwójne cudzysłowy na pojedyncze cudzysłowy i zadziałało.

0

W moim środowisku te odpowiedzi nie działały dla mnie. Próbuję użyć MSA jako tożsamości dla mojej puli aplikacji. Mogłem uruchomić wszystkie polecenia (odpowiedź @ musaab-al-okaidi) bez żadnego błędu w konsoli, ale po dalszej inspekcji żadna nazwa użytkownika nie była powiązana z pulą aplikacji.

Skończyłem modyfikowanie pliku applicationHost.config bezpośrednio (najpierw wykonaj kopię zapasową!), Aby dodać odpowiednią tożsamość do puli aplikacji.

Dla tych, którzy nie wiedzą, applicationHost.config można znaleźć w: c:\Windows32\inetsrv\config

w pliku applicationHost.config, poszukaj wpisu aplikacja basenie i dodać atrybut „username”, jak następuje:

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

Można również ustawić hasło w podobny moda (ponieważ używam MSA, nie było potrzeby ustawiania hasła tutaj, ponieważ MSA jest "zarządzany" w AD i zainstalowany na skrzynce IIS).

Zatrzymałem/uruchomiłem również serwer IIS, aby upewnić się, że zostały załadowane nowe konfiguracje.

Mam nadzieję, że to pomaga.