I have written a PowerShell script that will look at all IIS Application Pools, then set the recycle setting for Specific Time to a random time between 02.01 - 02.59.
It will create a log file D:\AppPoolRestart.txt which contains the App Pool name and the recycle time.
import-module webadministration
$AppPools = get-item -Path IIS:\AppPools\*
If (Test-Path D:\scripts\AppPoolRestart.txt)
{
remove-item -path D:\AppPoolRestart.txt
}
ForEach ( $app in $appPools )
{
$minute = Get-Random -Minimum 1 -Maximum 59
$Name = $app.Name
$time = "02:"+"$minute"+":00"
Set-ItemProperty -Path IIS:\AppPools\$Name -Name Recycling.periodicRestart.schedule.collection -Value @{value="$time"}
$output = "$Name"+" $time"
out-file -Filepath D:\AppPoolRestart.txt -inputobject "$output" -append
}