从章鱼设置idleTimeoutAction

问题描述 投票:0回答:2

我正在构建脚本来设置 octopus 的 startMode 和idleTimeoutAction。我的脚本正确地更改了 startMode,但我不断收到idleTimeoutAction 错误。有人可以帮助我吗?

这是我收到的错误:

在“APPSWDEV01”上执行脚本设置 LeadsAPI 属性 startMode 到 AlwaysRunning 旧值 AlwaysRunning 新值 AlwaysRunning 完成

将 LeadsAPI 属性idleTimeoutAction 设置为 Suspend System.ArgumentException:找不到属性(“idleTimeoutAction”) 在 \APPSWDEV01\AppPools\LeadsAPI 上。参数名称: 提供者特定选择列表位于 Microsoft.IIs.PowerShell.Provider.ConfigurationProvider.GetProperty(字符串 路径,Collection`1providerSpecificPickList)出现问题 设置属性

# Running outside octopus
param(
    [string]$APIName,
    [switch]$whatIf
) 

$ErrorActionPreference = "Stop" 

function Get-Param($Name, [switch]$Required, $Default) {
    $result = $null

    if ($OctopusParameters -ne $null) {
        $result = $OctopusParameters[$Name]
    }

    if ($result -eq $null) {
        $variable = Get-Variable $Name -EA SilentlyContinue   
        if ($variable -ne $null) {
            $result = $variable.Value
        }
    }

    if ($result -eq $null -or $result -eq "") {
        if ($Required) {
            throw "Missing parameter value $Name"
        } else {
            $result = $Default
        }
    }

    return $result
}

& {
    param(
        [string]$APIName
    ) 

    if (![string]::IsNullOrEmpty($APIName))
    {
        Write-Host "Setting $APIName property startMode to AlwaysRunning"

        try {
             Add-PSSnapin WebAdministration -ErrorAction SilentlyContinue
             Import-Module WebAdministration -ErrorAction SilentlyContinue

             $oldValue = Get-ItemProperty "IIS:\AppPools\$APIName" -Name "startMode"
             $oldValueString = ""

             if ($oldValue.GetType() -eq [Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute])
             {
                 $oldValueString = ($oldValue | Select-Object -ExpandProperty "Value");
             }
             else 
             {
                 $oldValueString = $oldValue
             }

             Write-Host "Old value $oldValueString"
             Set-ItemProperty "IIS:\AppPools\$APIName" -Name "startMode" -Value "AlwaysRunning"
             Write-Host "New value AlwaysRunning"
             Write-Host "Done"
        } catch {
            Write-Host $_.Exception|format-list -force
            Write-Host "There was a problem setting property"    
        }

        Write-Host "Setting $APIName property idleTimeoutAction to Suspend"

        try {
             Add-PSSnapin WebAdministration -ErrorAction SilentlyContinue
             Import-Module WebAdministration -ErrorAction SilentlyContinue

             $oldValue = Get-ItemProperty "IIS:\AppPools\$APIName" -Name "idleTimeoutAction" 
             $oldValueString = ""

             if ($oldValue.GetType() -eq [Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute])
             {
                 $oldValueString = ($oldValue | Select-Object -ExpandProperty "Value");
             }
             else 
             {
                 $oldValueString = $oldValue
             }

             Write-Host "Old value $oldValueString"
             Set-ItemProperty "IIS:\AppPools\$APIName" -Name "idleTimeoutAction" -Value "Suspend"
             Write-Host "New value Suspend"
             Write-Host "Done"
        } catch {
            Write-Host $_.Exception|format-list -force
            Write-Host "There was a problem setting property"    
        }
    }

 } `
 (Get-Param 'APIName' -Required)
powershell octopus-deploy iis-10
2个回答
4
投票

我查看了包含应用程序池设置的文件

C:\Windows\System32\inetsrv\config\applicationHost.config
。当在应用程序池上手动配置
idleTimeoutAction
时,结果是如下条目:

<add name="MyAppPool" managedRuntimeVersion="v4.0">
    <processModel idleTimeoutAction="Suspend" />
</add>

在 PowerShell 中,您可以通过以下命令访问

idleTimeoutAction
属性:

Get-ItemProperty "IIS:\AppPools\MyAppPool" -Name processModel.idleTimeoutAction

同样,您可以通过以下方式设置

idleTimeoutAction
属性:

Set-ItemProperty "IIS:\AppPools\MyAppPool" -Name processModel.idleTimeoutAction -Value "Suspend"

希望这有帮助。


0
投票

现在有一个名为 IIS App - Update Property 的社区步骤模板,您可以使用它来设置

processModel.idleTimeoutAction
值。

当该步骤运行时,它会输出以下内容:

您还可以通过添加另一个针对

processModel.idleTimeout
的步骤来设置超时本身,并将其设置为新值,例如
01:00:00
,而不是默认的
00:20:00

© www.soinside.com 2019 - 2024. All rights reserved.