SCCM: For those nasty incremental collections

One feature that is easily misunderstood in SCCM is one of "incremental updates to collections", which is this innocent little box: "Use incremental updates for this collection" . What I have noticed over time is that many customers use this as "Standard Operating Procedure" and hurt server performance by applying this to all collections they create.

This does cause a major problem as this option is meant for "high priority" collections, not for all collections. Think of it this way, if all collections are high priority, what would an actual high priority collection look like? Unfortunately, you don't get something for nothing in this life, and the more you evaluate collections, the less you have for other processes.

Some basic advice to using this feature is for these types of collections:
1. Collections that are considered "All" - like "All Workstations" or "All Windows 10 Systems" that have something pending on them, like software updates.
2. Collections which are considered actual high priority like "All antivirus updates" or have high priority software on them.

Anyone who has had me personally visit and talk about collections knows my #1 rule of them, Never create collections for the sake of reporting. Let reporting do its job. Collections should only be made for one purpose, deployment.

PowerShell can help you with scripting the fix to put your collections back to normal. In some cases, if all collections are incremental, it may be best to fix them all and then just set the ones you want manually. But, to the fix...

First, easiest to load PowerShell on your local system, as a primer, these are the commands you need to start:

import-module 'C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'

cd (Your Site Code):

Now, for the PowerShell:

This is how you can get an idea how many collections you have that are using incremental updates:

Get-CMDeviceCollection | Select -Property Name, CollectionID,RefreshType | Where-Object {$_.Refreshtype -eq 6} | FT -AutoSize

So, for those of us wondering, what is a 6? Well, collections go like this:

1: Manual Updates
2: Periodic Updates (like once a day, once a week)
4: Incremental Updates Only (like All Systems is an example)
6: Incremental and Periodic Updates

So, to update the collections?

$a = [wmi] "\\(your server)\root\sms\site_(your site code):SMS_Collection.CollectionID='(CollectionID)'"
$a.RefreshType = 2 #say you only wanted it once a day or week, or just remove incrementals)
$a.put() #Save it

— If you like my blogs, please share it on social media, rate it, and/or leave a comment. —