Мне нужно было создать PowerShell, который сначала создает 50 пулов приложений IIS и назначает каждому из них идентификатор пула приложений (имя пользователя и пароль). Следующая часть сценария - преобразование дочерних папок сайтов в приложения. В процессе конвертации я должен назначить каждому Приложению использовать определенный Пул приложений, который я создал выше. Вот мой сценарий, который частично работает.
Import-Module WebAdministration
$AppPools = @ (“site1-app1”,”site1-app2”,”site1-app3”,”site1-app4”,”site1-app5”…”site1-app50”)
$AppPoolFolders = @ (“app1”,”app2”,”app3”,”app4”,”app5”…”app50”)
$username = ‘domain\Site1SvcAct’
$password = ‘Site1SvcActPassword’
########——Create App Pool and Set Username & Password——########
foreach ($App in $AppPools) {
New-WebAppPool $App
Set-ItemProperty IIS:\AppPools\$App managedPipelineMode 0
Set-ItemProperty IIS:\AppPools\$App managedRuntimeVersion v4.0
Set-ItemProperty IIS:\AppPools\$App -Name processmodel -value @{userName = $username;password=$password;identitytype=3}
########——Convert /folder to Application and set to use App Pool ——########
foreach ($Folder in $AppPoolFolders) {
ConvertTo-WebApplication -ApplicationPool $App -PSPath ‘IIS:\Sites\Site1\$Folder’
}
}
Пулы приложений созданы успешно с правильной идентификацией пула приложений, но преобразование приложений частично работает. Папки становятся дочерними приложениями, как и ожидалось, но они не запускают правильные идентификаторы пула приложений. Он назначает всем папкам пула приложений первый пул приложений.
app1 : site1-app1
app2 : site1-app1
app3 : site1-app1
.
.
.
app50 : site1-app1
Где это должно выглядеть так:
app1 : site1-app1
app2 : site1-app2
app3 : site1-app2
.
.
.
app50 : site1-app50
Таким образом, Папка 1 должна быть назначена Пулу приложений 1, а Папка 2 должна быть назначена Пулу приложений 2 и т. Д ... Я знаю, что это из-за моего вложенного цикла "foreach", но я не знаю, как исправить цикл, чтобы получить мой желаемый вывод. Любые идеи, как это исправить?