I have been scripting the configuration of our IIS 7.5 instance and through [bits](http://itproctology.blogspot.com/2011/10/iis-powershell-and-type-mismatch-when.html) and pieces of other peoples scripts I have come up with a syntax that I like:

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

```

I have seen this done a number of different ways that are less terse and I like the way this syntax of setting object properties looks compared to something like what I see on [TechNet](http://technet.microsoft.com/en-us/library/ee909471%28WS.10%29.aspx):

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

```

One thing I haven't been able to figure out though is how to setup recycle schedules using this syntax.

This command sets ApplicationPoolDefaults but is ugly:

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

```

I have done this in the past through appcmd using something like the following but I would really like to do all of this through powershell:

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

```

I have tried:

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

```

This has the odd effect of turning the .schedule property into a timespan until I use $WebAppPool = get-item iis:\AppPools\AppPoolName to refresh the variable.

There is also `$WebappPool.recycling.periodicRestart.schedule.Collection`
but there is no add() function on the collection and I haven't found any other way to modify it.

Does anyone know of a way I can set scheduled recycle times using syntax consistent with the code I have written above?