八达通脚本模块错误地进入IF

时间:2018-04-10 12:57:31

标签: powershell octopus-deploy

我在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中正常工作。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

您需要导入 WebAdministration 模块以对抗IIS驱动器,否则Test-Path在检查时始终会失败。