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