NWC Services Blog
AD Security Gruppen als Mitgliedschaftsregel in SCCM Collections - Teil 2
Da die Verlinkung von AD Gruppen und Device Collections in SCCM relativ komplex ist, es jedoch über die Konsole standardmäßig keine andere Möglichkeit der Anlage gibt, möchte ich heute wie bereits in meinem letzten Post angekündigt zeigen, wie eine Device Collection mit AD Mitgliedschaftsregel auch schnell und einfach per PowerShell angelegt werden kann.
Hierfür möchte ich in diesem Beitrag lediglich die einzelnen Schritte, sowie alle benötigten Komponenten und PowerShell Cmdlets erklären. Aus diesen sehr statischen Befehlen kann man natürlich später jeden Grad von Automatisierung erreichen, bis hin zu grafischen Oberflächen bzw. einem kleinen Custom Wizard, der sich bei Bedarf sogar in das Kontextmenü der SCCM Konsole integrieren lässt.
Klären wir zunächst die Voraussetzungen für unser Vorhaben. Da wir uns nun neben SCCM auch im AD aufhalten bzw. Informationen auslesen möchten, wird das "Active Directory-Modul für Windows PowerShell" benötigt. Dieses kann auf Windows 10 über die RSA Tools nachinstalliert werden. Auf Windows Server 2016 kann dieses aber auch ganz einfach über den Server Manager aktiviert werden und ist dort unter "Rollenverwaltungstools --> AD DS und AD LDS Tools" zu finden.
Neben dem soeben installiertem AD PowerShell Modul muss auch das Configuration Manager PowerShell Modul importiert werden. Dieses ist im Installationspfad der Admin Konsole zu finden. Widmen wir uns nun den benötigten Befehlen für unser Vorhaben und importieren unsere beiden Module.
Import-Module ActiveDirectory
Import-Module 'D:\Program Files\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
Nun benötigen wir den SiteCode unserer SCCM Umgebung. Ohne den SiteCode können später weder Objekte ausgelesen noch angelegt werden, da dieser zur Identifikation der Umgebung benötigt wird. Im PSX Umfeld könnte man dies auch mit der Verbindung zum BLS gleichsetzen, allerdings muss nach dem Import des Configuration Manager Moduls keine Verbindung mehr aufgebaut werden.
$Site = (Get-PSDrive -PSProvider CMSite).name
Als nächstes wird für die anzulegende Device Collection ein Aktualisierungsintervall definiert. Ohne dieses Intervall lässt sich die Device Collection später nicht erstellen. Beim definieren des Intervalls wird neben der Startzeit auch die Frequenz und Einheit benötigt. In dem von mir angelegtem Beispiel würde sich die Device Collection demnach alle 15min ab dem 01.01.2018 aktualisieren.
Cd ${Site}:
$RefreshInterval = New-CMSchedule -RecurCount 15 -RecurInterval Minutes -Start "01/01/2018 0:00"
Neben dem Intervall fehlen zum Erstellen der Device Collection auch noch die Informationen zur gewünschten AD Gruppe. Im Beispiel übergebe bzw. suche ich nach dem Namen einer AD Gruppe über den Parameter "Filter". Möchte man die Suche auf eine gewünschte OU einschränken so kann dies über den Parameter "SearchBase" gemacht werden. Für das Anlegen der Collection wird neben dem Namen der Gruppe auch die ObjectGUID benötigt. Um dies zu veranschaulichen gebe ich die benötigten Informationen im Screenshot kurz über die Konsole aus.
$ADGroup = Get-ADGroup -Filter 'Name -eq "SW_NPP_Install"' -SearchBase "OU=SCCM SW Groups,OU=Groups,OU=SCCM,DC=dsm,DC=de"
Nun kann die Device Collection angelegt werden. Diese wird zunächst ohne Mitgliedschaftsregel erstellt und bekommt initial neben dem Aktualisierungsintervall und dem Namen noch eine einschränkende Collection mit. Hierfür nehme ich für das Beispiel die System Collection "All Systems". Zusätzlich kann über den Parameter "Comment" noch ein Kommentar mitgegeben werden.
New-CMDeviceCollection -LimitingCollectionName 'All Systems' -Name $ADGroup.Name -RefreshSchedule $RefreshInterval -Comment $ADGroup.ObjectGUID
Leider gibt es beim Anlegen einer Device Collection per PowerShell keine Möglichkeit den Anlageort gleich mit anzugeben. Demnach wird die neue Collection direkt unter "Device Collections" in der Root angelegt. Möchte man die Collection nun noch an einen speziellen Ort verschieben kann dies im Nachgang über folgende Befehle realisiert werden.
$CollectionID = (Get-CMDeviceCollection -Name $ADGroup.Name).collectionid
Move-CMObject -FolderPath "${Site}:\DeviceCollection\03 - Applications\34 - Optional" -ObjectId "$CollectionID"
Wirft man nun einen kleinen Blick in die SCCM Konsole, befindet sich die angelegte Collection bereits am gewünschten Ort.
Abschließend muss nun noch die Abfrageregel für die Collection definiert werden. Über den Parameter "QueryExpression" wird hierbei das WQL Statement definiert. Der Anzeigename der Abfrageregel, welcher auch in der SCCM Konsole zu sehen ist, wird über den Parameter "RuleName" angegeben.
Add-CMDeviceCollectionQueryMembershipRule -CollectionName $ADGroup.Name -QueryExpression "select * from SMS_R_System where SMS_R_System.SystemGroupName = 'dsm.de\\$($ADGroup.Name)'" -RuleName "AD Group Membership"
Zu guter Letzt kann bei Bedarf nun noch ein initiales Update der neuen Collection forciert werden.
Invoke-CMDeviceCollectionUpdate -Name $ADGroup.Name
Wie zu Beginn dieses Beitrags bereits erwähnt ist der beschriebene Ablauf sehr statisch gehalten um lediglich die einzelnen Befehle zu beschreiben. Nun können natürlich auch alle benötigten Variablen im Script dynamisch übergeben werden. Denkbar wäre auch, wie ebenfalls bereits erwähnt, die Erweiterung des Kontextmenüs der SCCM Konsole um eine kleine GUI zur Erstellung von Device Collections mit AD Abfrageregeln zu erstellen.
Die Erweiterung des Kontextmenüs in SCCM möchte ich allerdings erst in einem weiteren Beitrag beschreiben.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Comments