Einer des wohl schönsten Neuerungen von SCCM 2012 SP1 ist die PowerShell-Integration. Trotz allem fehlen an der ein oder anderen Stelle noch Optionen, um wirklich alles per ConfigMgr Cmdlets steuern zu können. So können inkrementelle Updates für Collections nicht per Set-CMDeviceCollection cmdlet einfach aktiviert werden.

Mit Hilfe von inkrementellen Updates wird immer nur das Delta erfasst und in die jeweilige Collection aufgenommenen. Angenommen wir haben seit ein paar Minuten neue Computerobjekte durch den Active Directory Group Discovery Prozess erfasst und damit in der Site Datenbank. So können wir durch setzen des Hakens periodisch die neuen Objekte in die Collection aufgenommen bekommen. Wenn wir den Haken nicht setzen, werden die Objekte erst bei einem geplanten vollständigen Update erfasst. Was heißt nun periodisch?

Periodisch heißt standardmäßig alle fünf Minuten.
Was ist aber nun, wenn wir mehrer hundert oder gar tausend Collections in unserer SCCM-Umgebung haben? Wie können wir diesen Haken dann bei allen Collections setzen bzw. sicherstellen, das der Haken für inkrementelle Updates bereits gesetzt wurde? Wir nehmen die PowerShell und arbeiten alle Collections mit einer ForEach-Object-Schleife ab. 10 Minuten anstatt 10 Tage exzessive Mausklickerei. 😉
Um den Haken für alle Device Collections zu setzen habe ich folgendes Script geschrieben:
################################## #Enable Incremental Updates #SCCM 2012 SP1 Collections #V1.0 2013-05-08 Erik Kleefeldt #PowerShell x86 verwenden! #Set-ExecutionPolicy Unrestricted -Force needs to run first ################################## #Basic Input #Siteserver,Sitecode,Install Dir for the Admin UI (not CM12 install dir) $siteserver='WS12APP1' $sitecode='F01:' #Don't forget the colon! $cmmodule='C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1' #Import CM2012-Module Import-Module $cmmodule Set-Location $sitecode #Acitvate each DeviceCollection for incremental Updates if it's not already active Get-CMDeviceCollection | ForEach-Object { $temp=[String]::format("\\{0}\root\sms\site_{1}SMS_Collection.CollectionID='{2}'",$siteserver,$sitecode,$_.CollectionID) $a=[wmi] $temp if ($a.IsBuiltIn -ne $true) { $a.RefreshType=6 $a.put() > $null write-host "Update for" $a.Name "is now activated." -foregroundcolor green } } write-host "Incremental Updates for all device collections is now enabled!" -foregroundcolor yellow ...
In diesem Script werden nur Device Collections modifiziert. Damit wir auch User Collections genauso anpassen können, muss lediglich das ConfigMgr Cmdlet “Get-CMDeviceCollection gegen Get-CMUserCollection ausgetauscht werden.
#Acitvate each UserCollection for incremental Updates if it's not already active Get-CMUserCollection | ForEach-Object { $temp=[String]::format("\\{0}\root\sms\site_{1}SMS_Collection.CollectionID='{2}'",$siteserver,$sitecode,$_.CollectionID) $a=[wmi] $temp if ($a.IsBuiltIn -ne $true) { $a.RefreshType=6 $a.put() > $null write-host "Update for" $a.Name "is now activated." -foregroundcolor green } } write-host "Incremental Updates for all user collections is now enabled!" -foregroundcolor yellow C:
Das war’s auch schon!
