¿Cómo puedo configurar los tiempos de reciclaje del grupo de aplicaciones IIS sin recurrir a la sintaxis fea de Add-WebConfiguration?

9

He estado escribiendo la configuración de nuestra instancia de IIS 7.5 y, a través de fragmentos de scripts de otras personas, he creado una sintaxis que me gusta:

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

He visto esto de varias maneras diferentes que son menos concisas y me gusta la forma en que se ve esta sintaxis de configuración de propiedades de objeto en comparación con algo como lo que veo en TechNet :

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

Sin embargo, una cosa que no he podido descubrir es cómo configurar los horarios de reciclaje utilizando esta sintaxis.

Este comando establece ApplicationPoolDefaults pero es feo:

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

He hecho esto en el pasado a través de appcmd usando algo como lo siguiente, pero realmente me gustaría hacer todo esto a través de powershell:

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

Yo he tratado:

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

Esto tiene el extraño efecto de convertir la propiedad .schedule en un intervalo de tiempo hasta que use $ WebAppPool = get-item iis: \ AppPools \ AppPoolName para actualizar la variable.

También existe $WebappPool.recycling.periodicRestart.schedule.Collection pero no hay una función add () en la colección y no he encontrado ninguna otra forma de modificarla.

¿Alguien sabe de alguna manera en que pueda establecer tiempos de reciclaje programados usando una sintaxis consistente con el código que he escrito anteriormente?

Chris Magnuson
fuente
¿Alguna vez te diste cuenta?
JohannesH

Respuestas:

10

Nunca pude descubrir cómo configurar esto en el objeto en sí, pero después de crearlo, funciona lo siguiente:

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
fuente
Esto funciona para mi.
jonnii
0

Entonces no solo

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

¿entonces? ¿O un equivalente ToString del TimeSpan?

(No uso PowerShell; solo una suposición sintáctica basada en tus otros bits).

TristanK
fuente