Como definir os tempos de reciclagem do pool de aplicativos IIS sem recorrer à sintaxe feia do Add-WebConfiguration?

9

Eu tenho script a configuração do nosso exemplo, IIS 7.5 e através de pedaços e peças de outros scripts povos eu vim com 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 já vi isso feito de várias maneiras diferentes, menos concisas e eu gosto da aparência dessa sintaxe de definir propriedades do objeto em comparação com algo semelhante ao que eu vejo no TechNet :

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

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

Este comando define 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 intervalo de tempo até que eu use $ WebAppPool = get-item iis: \ AppPools \ AppPoolName para atualizar a variável.

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

Alguém sabe como definir horários de reciclagem programados usando sintaxe consistente com o código que escrevi acima?

Chris Magnuson
fonte
Você já descobriu isso?
JohannesH

Respostas:

10

Eu nunca consegui descobrir como definir isso no próprio objeto, mas depois de criá-lo, o seguinte funciona:

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
geographika
fonte
Isso funciona para mim.
21713 jonnii
0

Então não apenas

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

então? Ou um equivalente ToString do TimeSpan?

(Não conheço o PowerShell; apenas um palpite sintático com base nos seus outros bits).

TristanK
fonte