Shadow Groups im Active Directory verwalten mit PowerShell

    Kostenloser Leitfaden: Deployment und Konfiguration von Windows 10. Image-Management mit ADK und MDT, Installation in VHDX, u.v.m. Zum Download »

    (Anzeige)

    Benutzerkonten zwischen Konten und Gruppen synchronisierenShadows Groups im Active Directory stehen für ein Konzept, bei dem man für OUs gleich­namige Sicherheits­gruppen anlegt, welche die gleichen User ent­halten wie die ent­sprechende OU. Power­Shell kann die zusammen­gehörigen OUs und Gruppen syn­chron halten, indem man damit User aus der Gruppe ent­fernt oder ihr hinzu­fügt.

    Der wesentliche Grund für die Verwendung von Shadow Groups besteht darin, dass man OUs keine Berechtigungen für Ressourcen zuteilen kann. Hat man etwa für die Mitarbeiter der Abteilung Marketing eine eigene OU erstellt und will ihnen Rechte auf einer Netz­freigabe einräumen, dann könnte man dafür eine Security Group Marketing anlegen, die alle Konten der OU Marketing enthält.

    Shadow Groups auch für Passwortregeln

    Ein weiterer häufiger Anwendungsfall sind Fine-Grained Password Policies, mit denen man Pass­wort­regeln für AD-Gruppen, aber nicht für Organizational Units definieren kann.

    Ein einfaches Anliegen könnte darin bestehen, dass man sich in PowerShell anzeigen lässt, zu welchen OUs es gleichnamige Sicherheits­gruppen gibt. Das folgende Script erledigt diese Aufgabe, indem es über alle OUs iteriert und Get-ADGroup in der Schleife mit einem Filter für den Namen ausführt.

    Dieses Script schränkt die Suche nicht auf bestimmte Bereiche des AD ein, sondern zieht alle OUs und Gruppen heran. Ein sinnvolles Ergebnis liefert es deshalb nur dann, wenn Namen für OUs nicht mehrfach vergeben wurden.

    Mit PowerShell überprüfen, für welche OUs gleichnamige Gruppen existieren.

    Abfrage auf Teilbaum des AD beschränken

    Je nach vorhandener Struktur für OUs und Gruppen kann man daher den Bereich für die Abfrage eingrenzen. Befinden sich etwa alle Shadow Groups in der OU ShadowGroups, dann liegt es nahe, den Aufruf mit dem Parameter SearchBase nach diesem Muster anzupassen:

    Get-ADGroup -Filter {Name -eq $_.Name} -SearchBase "OU=ShadowGroups,DC=contoso,DC=de"

    Auf die gleiche Weise lässt sich auch die Auswahl der OUs mit Get-ADOrganizationalUnit steuern, wo man zusätzlich den Parameter SearchScope etwa mit dem Wert OneLevel nutzen kann, um die Suchtiefe auf eine Ebene zu reduzieren.

    Diese Anmerkungen gelten auch für das nachfolgende Script, das prüft, ob namensgleiche OUs und Gruppen die gleichen Konten enthalten. Auch es erstreckt sich über die gesamte Struktur, was man mit den oben genannten Mitteln ändern kann.

    OU und Gruppen synchronsieren

    Verwendet man Shadow Groups, dann wird man in der Regel darauf achten, dass sie die gleichen Mitglieder enthalten wie die dazugehörige OU. Kommt etwa in der OU ein neues Konto hinzu, soll das sich das auch in der Gruppe widerspiegeln. Umgekehrt gilt das Gleiche, wo dann das betreffende Mitglied aus der Gruppe entfernt werden muss.

    Diese Aufgabe könnte man natürlich auch zu Fuß erledigen, aber PowerShell erleichtert diese Arbeit und dabei hilft dabei, Abweichungen zu vermeiden.

    Das folgende Script schaut, ob die OU Benutzer enthält, die in der Gruppe nicht vorkommen und fügt sie dann zu Letzterer hinzu. Diesem Zweck dient der Aufruf von Add-ADPrincipalGroupMembership, das mit dem Schalter Confirm für jedes Konto nachfragt, ob man die Aktion ausführen will.

    Umgekehrt löscht es Konten aus Gruppen, die nicht mehr in der OU vertreten sind. Diesem Zweck dient das Cmdlet Remove-ADPrincipalGroupMembership.

    Mitglieder zwischen OUs und Shadow Groups abgleichen

    Zu bedenken wäre hier noch, dass sich dieses Script nur um User Accounts kümmert. Wenn auch Computerkonten berücksichtigt werden sollen, dann müsste man sie mit Get-ADComputer aus der OU auslesen und dann im Vergleich berücksichtigen.

    Keine Kommentare