我在Octopus Deploy
中有一个脚本模块,它将在IIS中创建一个新的Web应用程序。作为其中的一部分,如果还没有存在,它还会创建一个IIS池。
function Create-WebApplication($webSite, $alias, $physicalPath, $poolName)
{
$pool = "IIS:\AppPools\$poolName"
if (Test-Path $pool)
{
Write-Host "IIS pool already exists: $poolName"
}
else
{
#--Always gets into this else condition, no matter exists or not--
Write-Host "Creating IIS pool: $poolName"
New-WebAppPool -Name $poolName
Set-ItemProperty $pool -Name "managedRuntimeVersion" -Value "v4.0"
}
Write-Host "Creating website: $webSite\$alias"
New-WebApplication -Name $alias -Site $webSite -PhysicalPath $physicalPath -ApplicationPool $poolName -Force
Write-Host "Setting the application pool: $poolName"
Set-ItemProperty IIS:\Sites\$webSite\$alias -name applicationPool -value $poolName -Force
}
问题是,它总是进入else
条件,它尝试创建应用程序池。
相同的脚本在PowerShell ISE中正常工作。
我错过了一些明显的东西吗?
答案 0 :(得分:1)
您需要导入 WebAdministration 模块以对抗IIS驱动器,否则Test-Path
在检查时始终会失败。