$CSV = {} | Select Server_Name,Items_Deleted_from_Cache,Timestamp | Export-CSV "\\SERVER\E$\Performance\Clear SCCM Cache\Clear SCCM Cache results.csv" -NoType Get-Content "\\SERVER\E$\Performance\Clear SCCM Cache\ServerList.txt" | ForEach-Object { #discover $MinDays = 50 $UIResourceMgr = New-Object -ComObject UIResource.UIResourceMgr $Cache = $UIResourceMgr.GetCacheInfo() $DeleteItems = ($Cache.GetCacheElements() | where-object {[datetime]$_.LastReferenceTime -lt (get-date).adddays(-$mindays)} | Measure-object).Count if ($DeleteItems > 0) { $result1 = 1 }else{ $result1 = 0 } # If $result = 0 -> run the second script if ($result1 -eq 0) { #remediate $logdate = (Get-Date -UFormat "%m%d%Y.%H%M") [PSCustomObject]@{Server_Name=$env:COMPUTERNAME;Items_Deleted_from_Cache=$DeleteItems;Timestamp=$logdate} | Export-CSV "\\SERVER\E$\Performance\Clear SCCM Cache\Clear SCCM Cache results.csv" -Append -Force -NoType $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) } do {$WinUpdate = get-service wuauserv | select Status -ExpandProperty Status ; Start-Service -Name wuauserv -Confirm:$false | start-sleep 5} while ($WinUpdate -ne "Running") do {$CCMExec = get-service CCMExec | select Status -ExpandProperty Status ; Start-Service -Name CCMExec -Confirm:$false | start-sleep 5} while ($CCMExec -ne "Running") } }