2013-02-14 15 views
16

Sto tentando di utilizzare PowerShell per creare un pool di applicazioni in IIS. Dopo la ricerca sul web, ho creato il seguente script di test:Usa PowerShell per creare AppPool non imposta Identità 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 
} 

Quando eseguo lo script, il nome utente e la password non vengono aggiornati ai valori ho impostato.

Ecco i risultati dei due blocchi di stampa

#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 

cerca in IIS, il pool di applicazioni mostra il .Net Framework è stato aggiornato, ma l'identità è ancora impostato su ApplicationPoolIdentity. Dovrebbe essere Domain \ UserName.

enter image description here

sono un amministratore sulla macchina, e io sono in esecuzione di PowerShell in modalità Amministratore. Qualche idea su cosa possa mancare per farlo funzionare?

risposta

22

Sarà necessario cambiare il tipo di modello identità del processo di accettare un account utente al posto del ApplicationPoolIdentity di default e questo può essere fatto come segue:

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 

Spero che questo aiuta.

4

mi sono imbattuto in questo dopo aver bisogno di impostare l'appPool per NetworkService e per chiunque altro la necessità di fare questo, ecco la sintassi per IIS 7.5 per impostare l'appPool a NetworkService

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

Nota: In IIS 7.5, NetworkService è stato acceso dal valore 3 al valore 2.

Maggiori informazioni su Process Model può essere trovato qui: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

2

sopra mai lavorato per me, questo fatto:

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

ho avuto problemi simili fissando l'identità. Infine, ho controllato per vedere che cosa stava tramontando la password per:

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

E visto solo una password parziale. Si scopre che stavo usando le virgolette doppie per la stringa della password param, e la password iniziata con '$' che ha causato l'analisi come variabile.

Ho cambiato le virgolette doppie in virgolette singole e ha funzionato.

0

Nel mio ambiente, queste risposte non funzionavano per me. Sto cercando di utilizzare un MSA come identità per il mio pool di app. Potrei eseguire tutti i comandi (risposta di @ musaab-al-okaidi) senza alcun errore nella console, ma dopo un'ulteriore ispezione, nessun nome utente è stato associato al pool di app.

Ho finito per modificare direttamente il file applicationHost.config (effettuare prima un backup!) Per aggiungere l'identità corretta per il pool di applicazioni.

Per chi non lo sapesse, l'applicazione Host.config può essere trovato in: c:\Windows32\inetsrv\config

All'interno del file applicationHost.config, cercare la voce app pool, e aggiungere un attributo 'nome utente', come la seguente:

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

È inoltre possibile impostare la password di simile fashion (visto che sto utilizzando un MSA, non è stato necessario impostare la password qui, poiché MSA è "gestito" in AD e installato nella casella IIS).

Ho anche arrestato/avviato il server IIS, solo per essere sicuro che le nuove configurazioni fossero state caricate.

Speriamo che questo aiuti.

Problemi correlati