У вас четвертая опечатка if()
.
Кроме того, ваш код работает должным образом.
- Он немедленно запускает пул приложений. Это можно проверить из CLI и IIS Management GUI.
- Если параметры пользователя / пароля верны в том смысле, что пользователь существует, а пароль точен, то для этих параметров будет установлен идентификатор пула. Это можно проверить в IIS Management GUI.
. Я бы рекомендовал указать модули, от которых зависит ваш код, с помощью оператора #Requires
.
#Requires -RunAsAdministrator
#Requires -Modules WebAdministration
Function Create-AppPools(
$appPoolName = "TestPool2",
$appPoolDotNetVersion = "v4.0",
$managedPipelineMode = "Integrated",
$startMode = "OnDemand",
$userName,
$password
) {
if (!$appPoolName) {
return;
}
Write-Host " "
#navigate to the app pools root
cd IIS:\AppPools\
#check if the app pool exists
if (!(Test-Path $appPoolName -pathType container)) {
Write-Host "`t Creating AppPool: " + $appPoolName
#create the app pool
$appPool = New-Item $appPoolName
if ($appPoolDotNetVersion) {
$appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $appPoolDotNetVersion
}
if ($managedPipelineMode) {
$appPool | Set-ItemProperty -Name "managedPipelineMode" -Value $managedPipelineMode
}
if ($startMode) {
$appPool | Set-ItemProperty -Name "startMode" -Value $startMode
}
if ($userName -and $password) {
$apppool | Set-ItemProperty -Name processmodel -value @{userName = $userName; password = $password; identitytype = 3 }
}
else {
$apppool | Set-ItemProperty -Name "ProcessModel.IdentityType" -value 3
}
Write-Host "`t`t AppPool: " + $appPoolName + " created successfully" -ForegroundColor Green
}
else {
Write-Host "`t AppPool " + $appPoolName + " already exists" -ForegroundColor Blue
}
}
Create-AppPools