Jak ustawić czasy recyklingu puli aplikacji IIS bez uciekania się do brzydkiej składni Add-WebConfiguration?

9

I zostały skryptów konfigurację naszego IIS 7.5 instancji oraz przez bitów i kawałków innych ludzi skryptów mam wymyślić składni, które lubię:

$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
}

Widziałem to na wiele różnych sposobów, które są mniej zwięzłe i podoba mi się sposób, w jaki wygląda ta składnia ustawiania właściwości obiektu w porównaniu do czegoś takiego, co widzę w TechNet :

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

Jednej rzeczy, której nie byłem w stanie zrozumieć, to jak skonfigurować harmonogramy recyklingu przy użyciu tej składni.

To polecenie ustawia ApplicationPoolDefaults, ale jest brzydkie:

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

Zrobiłem to w przeszłości przez appcmd przy użyciu czegoś takiego, ale naprawdę chciałbym to wszystko zrobić za pomocą programu PowerShell:

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

Próbowałem:

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

Ma to dziwny efekt przekształcenia właściwości .schedule w przedział czasu, dopóki nie użyję $ WebAppPool = get-item iis: \ AppPools \ AppPoolName do odświeżenia zmiennej.

Istnieje również, $WebappPool.recycling.periodicRestart.schedule.Collection ale nie ma funkcji add () w kolekcji i nie znalazłem żadnego innego sposobu jej modyfikacji.

Czy ktoś wie o sposobie ustawienia zaplanowanych czasów recyklingu przy użyciu składni zgodnej z kodem, który napisałem powyżej?

Chris Magnuson
źródło
Czy kiedykolwiek to rozgryzłeś?
JohannesH

Odpowiedzi:

10

Nigdy nie mogłem wymyślić, jak ustawić to na samym obiekcie, ale po jego utworzeniu działają:

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
geografia
źródło
To działa dla mnie.
jonnii
0

Więc nie tylko

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

następnie? Lub odpowiednik ToString TimeSpan?

(Nie używam PowerShell; po prostu zgaduj składniowo na podstawie innych twoich bitów).

TristanK
źródło