Wie kann ich die Recyclingzeiten für den IIS-Anwendungspool festlegen, ohne auf die hässliche Syntax von Add-WebConfiguration zurückzugreifen?

9

Ich habe Skripts für den Aufbau unserer IIS 7.5 - Instanz und durch Bits und Stücke von anderen Völkern Skripte ich mit einer Syntax kommen habe , dass ich wie:

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

Ich habe gesehen, dass dies auf verschiedene Arten geschieht, die weniger knapp sind, und ich mag die Art und Weise, wie diese Syntax zum Festlegen von Objekteigenschaften im Vergleich zu etwas aussieht, das ich in TechNet sehe :

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

Eine Sache, die ich jedoch nicht herausfinden konnte, ist das Einrichten von Recycling-Zeitplänen mit dieser Syntax.

Dieser Befehl setzt ApplicationPoolDefaults, ist aber hässlich:

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

Ich habe dies in der Vergangenheit über appcmd mit etwas wie dem folgenden getan, aber ich würde das alles wirklich gerne über Powershell tun:

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

Ich habe versucht:

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

Dies hat den seltsamen Effekt, dass die Eigenschaft .schedule in eine Zeitspanne umgewandelt wird, bis ich $ WebAppPool = get-item iis: \ AppPools \ AppPoolName verwende, um die Variable zu aktualisieren.

Es gibt auch, $WebappPool.recycling.periodicRestart.schedule.Collection aber es gibt keine add () - Funktion in der Sammlung und ich habe keine andere Möglichkeit gefunden, sie zu ändern.

Kennt jemand eine Möglichkeit, geplante Recyclingzeiten mithilfe einer Syntax festzulegen, die mit dem oben geschriebenen Code übereinstimmt?

Chris Magnuson
quelle
Hast du es jemals herausgefunden?
JohannesH

Antworten:

10

Ich konnte nie herausfinden, wie ich dies für das Objekt selbst festlegen soll, aber nach dem Erstellen funktioniert Folgendes:

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
quelle
Das funktioniert bei mir.
Jonnii
0

Also nicht nur

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

dann? Oder ein ToString-Äquivalent zum TimeSpan?

(Ich mache keine PowerShell; nur eine syntaktische Vermutung basierend auf Ihren anderen Bits).

TristanK
quelle