使用 PowerShell 设置应用程序池的常规时间间隔(布尔)值

使用 PowerShell 设置应用程序池的常规时间间隔(布尔)值

我需要的

是使用PowerShell自动将黄色标记的值设置为false:

在此处输入图片描述

那是在应用程序池上右键单击“高级设置”时。

我需要它来进行 Octopus 部署后脚本。

我不需要什么

我不需要Regular Time Interval (minutes),因为它已经涵盖了:

$AppPool.recycling.periodicRestart.time = ( [TimeSpan]::FromMinutes($desiredValue))

我知道的

与许多其他值不同,Regular Time Interval不在applicationHost.config文件中。我确信是因为:

  1. 我在主机文件中找不到任何类似文本的内容。
  2. 通过 IIS 设置值不会更新文件

所以我不能使用主机配置来查找结构(就像我对其他值所做的那样)。

有什么线索吗?

答案1

Recycling.LogEventOnRecycle可以从返回的应用程序池对象的属性中读取该信息Get-IISAppPool,但奇怪的是,对此的更改似乎不会持久。

为了使更改生效,我们需要不同的方法。首先,我们将导入 IIS 管理模块,这将创建一个包含 IIS 对象的伪驱动器。

Import-Module WebAdministration

然后我们转到有问题的应用程序池。

cd "IIS:\AppPools\$name"

(假设$name是您的应用程序池的名称。)现在我们得到有关回收的配置部分。

$cfg = Get-ItemProperty . 'recycling'

此值是导致生成事件的事件的逗号分隔列表。我们删除了与Time您突出显示的 GUI 元素相对应的事件。

$cfg.logEventOnRecycle = ($cfg.logEventOnRecycle -split ',' | ? {$_ -ne 'Time'}) -join ','

最后我们提交改变的配置部分。

Set-ItemProperty . 'recycling' $cfg

查阅 IIS 管理 GUI 表明这确实保存了我们的选择。

请注意,为了避免其他读者产生混淆,关闭此特定选项并不会禁用定期回收。相反,它会删除回收时生成的日志条目。要禁用定期重启,请将常规时间间隔设置为零。

相关内容