Iis-7

使用 Powershell 操作 IIS7 配置

  • September 27, 2013

我正在嘗試使用 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 創建的元素,我認為這是避免繼承任何預設值所必需的。

這種集合(帶有“add”、“remove”和“clear”元素)在配置文件中似乎是相當標準的,但我似乎找不到任何關於如何一致地與它們互動的好的文件。

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

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

這將在 <schedule> 中添加 <clear /> 節點

引用自:https://serverfault.com/questions/221275