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. —


Comments (3)

  1. Garrett M says:

    Forgot to add one thing. The max recommended that are set to incremental for User and Device combined. Which is 200….

    1. leecstevens says:

      Absolutely, but also you’ve seen the SOP some have used to make all collections incremental (why I left the limits out). I always prefer a “be smart, don’t start” method unless there is a truly drop dead essential collection that needs incremental updates. I’m more fond of a daily full update rather than the 7 day default as well.

  2. Rich says:

    The 200 was for previous versions of Configuration Manager and has been lifted. You still have to be careful though.
    Be careful of lazy WMI properties.
    https://trevorsullivan.net/2010/09/28/powershell-configmgr-wmi-provider-feat-lazy-properties/

Skip to main content