Como posso definir os tempos de reciclagem do Pool de Aplicativos do IIS sem recorrer à feia sintaxe do Add-WebConfiguration?

9

Eu criei scripts para a configuração da nossa instância do IIS 7.5 e por meio de bits e pedaços de scripts de outras pessoas eu criei uma sintaxe que eu gosto:

$WebAppPoolUserName = "domain\user"
$WebAppPoolPassword = "password"

$WebAppPoolNames = @("Test","Test2")

ForEach ($WebAppPoolName in $WebAppPoolNames ) {
    $WebAppPool = New-WebAppPool -Name $WebAppPoolName  
    $WebAppPool.processModel.identityType = "SpecificUser"
    $WebAppPool.processModel.username = $WebAppPoolUserName
    $WebAppPool.processModel.password = $WebAppPoolPassword
    $WebAppPool.managedPipelineMode = "Classic"
    $WebAppPool.managedRuntimeVersion = "v4.0"
    $WebAppPool | set-item
}

Eu vi isso feito de várias maneiras diferentes que são menos concisas e gosto da maneira como essa sintaxe de configuração de propriedades de objetos parece comparada com algo parecido com o que eu vejo em TechNet :

Set-ItemProperty 'IIS:\AppPools\DemoPool' -Name recycling.periodicRestart.requests -Value 100000

Uma coisa que não consegui descobrir é como configurar os agendamentos de reciclagem usando essa sintaxe.

Este comando define o ApplicationPoolDefaults, mas é feio:

add-webconfiguration  system.applicationHost/applicationPools/applicationPoolDefaults/recycling/periodicRestart/schedule -value (New-TimeSpan -h 1 -m 30)

Eu fiz isso no passado através do appcmd usando algo como o seguinte, mas eu realmente gostaria de fazer tudo isso através do powershell:

%appcmd% set apppool "BusinessUserApps" /+recycling.periodicRestart.schedule.[value='01:00:00']

Eu tentei:

$WebAppPool.recycling.periodicRestart.schedule = (New-TimeSpan -h 1 -m 30)

Isso tem o efeito estranho de transformar a propriedade .schedule em um limite de tempo até que eu use $ WebAppPool = get-item iis: \ AppPools \ AppPoolName para atualizar a variável.

Há também $WebappPool.recycling.periodicRestart.schedule.Collection mas não há nenhuma função add () na coleção e não encontrei outra maneira de modificá-la.

Alguém sabe de uma maneira que eu possa definir tempos de reciclagem programados usando a sintaxe consistente com o código que escrevi acima?

    
por Chris Magnuson 06.01.2012 / 03:46

2 respostas

9

Eu nunca consegui descobrir como definir isso no próprio objeto, mas depois de criar os seguintes trabalhos:

clear-ItemProperty IIS:\AppPools\MyPoolName -Name Recycling.periodicRestart.schedule #clear values
set-ItemProperty IIS:\AppPools\MyAppPoolName -Name Recycling.periodicRestart.schedule -Value @{value="00:00:00"} #to set it to midnight
    
por 24.10.2012 / 22:07
0

Então não apenas

$webapppool.recycling.periodicrestart.schedule -Value "01:30:00" 

então? Ou um equivalente ToString do TimeSpan?

(Eu não faço o PowerShell; apenas um palpite sintático baseado em seus outros bits).

    
por 06.01.2012 / 09:36