【问题标题】:Powershell App Pool set periodicRestart syntaxPowershell 应用程序池设置周期性重启语法
【发布时间】:2015-10-27 10:44:55
【问题描述】:

我正在尝试使用 powershell 脚本设置 periodicRestart 属性,但我尝试使用的语法与我在代码示例中看到的略有不同。

这是根据Set the specific times to recycle an application pool with PowerShell做的一种方法:

Clear-ItemProperty $iisAppPoolName -Name Recycling.periodicRestart.schedule
Set-ItemProperty   $iisAppPoolName -Name Recycling.periodicRestart.schedule `
                                   -Value @{value="01:00:00"}

但是,我已经有一段代码,我在其中设置 $appPool 本身的属性,如下所示:

$appPool = New-WebAppPool $iisAppPoolName 
$appPool.managedPipelineMode = "Classic"
$appPool.managedRuntimeVersion = "c4.0"
$appPool.recycling.periodicRestart.time = [TimeSpan]"00:00:00"
$appPool | Set-Item

效果很好,所以我想添加以下行:

$appPool.recycling.periodicRestart.schedule = @{value="01:00:00"}

但我无法获取 @{value="01:00:00"} 的语法。 schedule 属性需要一个哈希表,我正在传递它。

有什么想法吗?

【问题讨论】:

    标签: powershell iis application-pool


    【解决方案1】:

    有趣的是,您将其视为[Hashtable]。我将其视为[Microsoft.Iis.Powershell.Framework.ConfigurationElement]

    它有一个名为.UpdateCollection() 的方法,它需要[PSObject[]],所以它正在寻找一个对象数组。

    问题是,无论是在从New-WebAppPool 还是从Get-Item IIS:\AppPools\ExistingPool 返回的池对象上调用该方法,都会导致错误表明它是只读的。

    我尝试将整个 .Collection 替换为添加了时间跨度对象的新数组列表,我没有收到任何错误,但它没有设置值。

    我也尝试创建一个 ConfigurationElement 对象,但它似乎没有构造函数,所以它可能是代码中某处的私有类。

    我并不是说绝对没有办法按照你的意愿去做,但看起来你最好只使用Set-ItemProperty,因为其中一些属性似乎是旨在仅通过 PS Provider 进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2014-02-13
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多