2015-03-24 1 views
3

Укорачиваемый код ниже работает, но он завершается с использованием идентификатора ApplicationPool, а не конкретных, которые я указываю в массиве.Как создать пул приложений с конкретным пользователем в IIS 8.5 с помощью PowerShell?

Объявления:

#App pool array positions 
$Name = 0 
$User = 1 
$Pwdx = 2 

#Application array positions 
$SiteNm = 0 
$PhyPath = 1 
$PoolNm = 2 

#App Pool Settings 
$Port="80" 
$HostName="*" 
$Environment="local" 
$Runtime="v4.0" 
$Pipeline="0" #Integrated 
$Identity="3" #SpecificUser 

#Define the App Pools 
$Pools = @(3)*2 
$Pools[0] = "SomeAppPool","FooBar\SomeUser","S0meUs3rP4ssw0RD" 
$Pools[1] = "AnotherAppPool","FooBar\AnotherUser","An0th3rUs3rP4ssw0RD" 

Выполнить код:

Import-Module WebAdministration 

#navigate to the app pools root 
cd IIS:\AppPools\ 

foreach($p in $Pools) 
{ 
    $AppPoolName = $p[$Name] 
    $AppPoolUser = $p[$User] 
    $AppPoolPwd = $p[$Pwdx] 

    $appPool = New-Item $AppPoolName 
    $appPool | Set-ItemProperty -Name managedRuntimeVersion -Value $Runtime 
    $appPool | Set-ItemProperty -Name managedPipelineMode -Value $Pipeline 
    $appPool | Set-ItemProperty -Name processModel.identityType -Value $Identity 
    $appPool | Set-ItemProperty -Name processModel.username -Value $AppPoolUser 
    $appPool | Set-ItemProperty -Name processModel.password -Value $AppPoolPwd 

    Write-Host "$AppPoolName Application Pool Created..." 
} 

ответ

5

Вместо использования "Set-ItemProperty", доступ и установить свойство AppPool непосредственно:

$appPool = New-Item $AppPoolName 
$appPool.managedRuntimeVersion = $Runtime 
$appPool.managedPipelineMode = $Pipeline 
$appPool.processModel.identityType = $Identity 
$appPool.processModel.username = $AppPoolUser 
$appPool.processModel.password = $AppPoolPwd 
$appPool | Set-Item 
$appPool.Stop() 
$appPool.Start() 

EDI Т: Проделали некоторые тесты, и кажется, что ваш код работает нормально, за исключением того, что он не устанавливает имя пользователя. Зачем?

Фактический параметр - «processModel.userName» (обратите внимание на капитал «N»). Таким образом, это выглядит как

$appPool | Set-ItemProperty -Name processModel.userName -Value $AppPoolUser 

чувствителен к регистру, но

$appPool.processModel.username = $AppPoolUser 

нет. Получил любовь к PowerShell.

+0

Спасибо, что нашли! Я пошел вперед с вашей версией доступа и настройки напрямую. Намного легче. –

+0

Я также заметил, что $ Identity должно быть числовым значением, а не строкой: $ IdentityType = 3 – viperguynaz

Смежные вопросы