Enable or Disable Incremental Collection Updates via PowerShell

Hi Gang.

Here is a couple of functions I’ve written to enable or disable Incremental Collection updates by Collection Name or Collection ID.

Enable via Collection ID

Enable-IncrementalUpdates -CollectionID PRI0000C

Enable via Collection Name

Enable-IncrementalUpdates –CollectionName “CU Deployment”

Disable via Collection ID

Disable-IncrementalUpdates -CollectionID PRI0000C

Disable via Collection Name

Disable-IncrementalUpdates –CollectionName “CU Deployment”

I’ve also added an optional parameter to specify the Server Name, so this can be run remotely by adding the SMS Provider name to your cmdlet

Enable-IncrementalUpdates -CollectionID PRI0000C –Server PRI

And of course it’s pipeline enabled

Import-CSV -Path .\collections.csv | % {Enable-IncrementalUpdates -CollectionName $_.Collection}

Here’s the code

Edit: Thanks to our commenter below, I’ve updated the script to perform the change depending on the membership schedule setting.

001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045 function Disable-IncrementalUpdates { [CmdletBinding(DefaultParameterSetName="CollectionID")] Param ( [Parameter(Mandatory=$true,ParameterSetName="collectionID", Position=0)] [String]$CollectionID, [Parameter(Mandatory=$true,ParameterSetName="collectionName", Position=0)] [String]$CollectionName, [Parameter(Mandatory=$false,ParameterSetName="collectionName", Position=1)] [Parameter(Mandatory=$false,ParameterSetName="collectionID", Position=1)] [String]$Server )if(!$server){ $server = '.'}$siteCode = @(Get-WmiObject -Namespace root\sms -Class SMS_ProviderLocation -ComputerName $server)[0].SiteCodegwmi sms_collection -ComputerName $server -Namespace root\sms\site_$siteCode -Filter "CollectionID = '$collectionID' or Name = '$collectionName'" | % {$collection = [wmi] $_.__Path If($collection.RefreshType -eq 4) {$collection.RefreshType = 1}If($collection.RefreshType -eq 6) {$Collection.RefreshType = 2}$collection.Put() | Out-Null} }function Enable-IncrementalUpdates { [CmdletBinding(DefaultParameterSetName="CollectionID")] Param    ( [Parameter(Mandatory=$true,ParameterSetName="collectionID", Position=0)] [String]$CollectionID, [Parameter(Mandatory=$true,ParameterSetName="collectionName", Position=0)] [String]$CollectionName, [Parameter(Mandatory=$false,ParameterSetName="collectionName", Position=1)] [Parameter(Mandatory=$false,ParameterSetName="collectionID", Position=1)] [String]$Server )if(!$server){ $server = '.'}$siteCode = @(Get-WmiObject -Namespace root\sms -Class SMS_ProviderLocation -ComputerName $server)[0].SiteCodegwmi sms_collection -ComputerName $server -Namespace root\sms\site_$siteCode -Filter "CollectionID = '$collectionID' or Name = '$collectionName'" | % {$collection = [wmi] $_.__Path If($collection.RefreshType -eq 1) {$collection.RefreshType = 4}If($collection.RefreshType -eq 2) {$Collection.RefreshType = 6}$collection.Put() | Out-Null } }

Happy POSHing!

Matt