Tidy Cache – Clean Up Old CCMCache

You are probably already aware that ConfigMgr manages its client cache pretty well. I’ve run into situations where server VMs are running leaner and leaner, with much less disk space on the system drive than desired, so I built a compliance settings rule that will help keep the cache a little more tidy than we do out-of-the-box.

This script is an example to purge all content in the ccmcache folder that is older than 60 days.  Below is a simple example for creating a compliance settings rule.

Create a new Configuration Item CI, and paste the contents of the Discovery script and Remediation script into their respective locations. Create a new compliance rule, for where the count from your discovery script equals zero, as shown below.

Discovery Script:

#discover
$MinDays = 60
$UIResourceMgr = New-Object -ComObject UIResource.UIResourceMgr
$Cache = $UIResourceMgr.GetCacheInfo()
($Cache.GetCacheElements() |
where-object {[datetime]$_.LastReferenceTime -lt (get-date).adddays(-$mindays)} |
Measure-object).Count

Remediation Script:

#remediate
$MinDays = 60
$UIResourceMgr = New-Object -ComObject UIResource.UIResourceMgr
$Cache = $UIResourceMgr.GetCacheInfo()
$Cache.GetCacheElements() |
where-object {[datetime]$_.LastReferenceTime -lt (get-date).adddays(-$mindays)} |
foreach {
$Cache.DeleteCacheElement($_.CacheElementID)
}

tidycache

Deploy this script (with remediation) to your test lab group, and verify that it properly purges content that is older than 60 days in the ccmcache folder.

All Set! Test, test, and release to prod!

Greg