Manipulando a configuração do IIS7 com o Powershell

4

Estou tentando fazer o script de algumas tarefas de configuração do IIS7 no PowerShell usando o módulo WebAdministration. Eu sou bom com a configuração de propriedades simples, mas estou tendo alguns problemas quando se trata de lidar com coleções de elementos nos arquivos de configuração.

Como exemplo imediato, quero que os pools de aplicativos sejam reciclados em um determinado cronograma e o cronograma seja uma coleta de horários. Quando configuro isso por meio do console de gerenciamento do IIS, a seção de configuração relevante se parece com isso:

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

No meu script, gostaria de poder realizar a mesma coisa e tenho as seguintes duas linhas:

#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)

Isso faz quase a mesma coisa, mas o XML resultante não possui o elemento <clear/> que é criado por meio da GUI, que acredito ser necessário para evitar herdar quaisquer valores padrão.

Esse tipo de coleção (com elementos "add", "remove" e "clear") parece ser bastante padronizado nos arquivos de configuração, mas não consigo encontrar nenhuma boa documentação sobre como interagir com eles consistentemente.

    
por AwesomeTown 11.01.2011 / 21:43

1 resposta

1

Em vez de usar o Clear-WebConfiguration, use Remove-WebConfigurationProperty:

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

Isso adicionará a tag < clear / > nó dentro < agenda >

    
por 27.09.2013 / 22:17