使用 Powershell 操作 IIS7 配置

使用 Powershell 操作 IIS7 配置

我正在尝试使用 WebAdministration 模块在 PowerShell 中编写一些 IIS7 设置任务脚本。我擅长设置简单的属性,但在处理配置文件中的元素集合时遇到了一些麻烦。

举个直接的例子,我希望应用程序池按照给定的时间表回收,时间表是时间的集合。当我通过 IIS 管理控制台进行设置时,相关的配置部分如下所示:

<add name="CVSupportAppPool">
    <recycling>
        <periodicRestart memory="1024" time="00:00:00">
            <schedule>
                <clear />
                <add value="03:31:00" />
            </schedule>
        </periodicRestart>
    </recycling>
</add>

在我的脚本中我希望能够完成同样的事情,我有以下两行:

#clear any pre-existing schedule
Clear-WebConfiguration "/system.applicationHost/applicationPools/add[@name='$($appPool.Name)']/recycling/periodicRestart/schedule"
#add the new schedule
Add-WebConfiguration "/system.applicationHost/applicationPools/add[@name='$($appPool.Name)']/recycling/periodicRestart/schedule" -value (New-TimeSpan -h 3 -m 31)

确实如此几乎同样的事情,但生成的 XML 缺少<clear/>通过 GUI 创建的元素,我认为这对于避免继承任何默认值是必要的。

这种收集(包含“添加”、“删除”和“清除”元素)在配置文件中似乎相当标准,但我似乎找不到任何关于如何与它们一致交互的良好文档。

答案1

不要使用 Clear-WebConfiguration,而要使用 Remove-WebConfigurationProperty:

Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/applicationPools/add[@name='$($appPool.Name)']/recycling/periodicRestart/schedule" -name "."

这将在 <schedule> 中添加 <clear /> 节点

相关内容