Bei der Verwaltung von Active Directory, insbesondere in größeren Umgebungen, ist es üblich, Gruppenmitgliedschaften von einem Benutzer auf einen anderen zu übertragen – beispielsweise beim Onboarding neuer Mitarbeiter oder bei der Umstrukturierung von Teams. Dies manuell in der ADUC-Konsole durchzuführen, kann sehr mühsam sein, vor allem wenn jemand Mitglied in Dutzenden von Gruppen ist. Daher ist die Verwendung von PowerShell-Skripten die beste Lösung. Sie sparen Zeit, reduzieren Fehler und sind generell effizienter, sobald man sich damit vertraut gemacht hat. Wenn Sie mehrere Benutzer verwalten, erleichtert die Automatisierung mit Skripten die Arbeit erheblich.
In der Praxis ist es recht einfach: Man kopiert die Gruppen des Quellbenutzers und fügt diese Gruppen dem Zielbenutzer hinzu. Das ist besonders praktisch, wenn jemand die Abteilung verlässt und sein Nachfolger die gleichen Zugriffsrechte benötigt. Wichtig ist, dass Ihr Konto über die Berechtigung zum Ändern von Gruppenmitgliedschaften verfügt – andernfalls gibt PowerShell eine Fehlermeldung aus. Wenn Sie diese Befehle ausführen, stellen Sie sicher, dass Sie mit Domänenadministratorrechten oder delegierten Berechtigungen angemeldet sind.
Windows macht es einem natürlich manchmal unnötig schwer. Hat man den Dreh aber erst einmal raus, ist es ein recht einfacher Prozess. Beachten Sie nur, dass Skripte je nach Umgebung manchmal etwas angepasst werden müssen, insbesondere bei verschachtelten Gruppen oder speziellen Berechtigungen. Und falls etwas schiefgeht, kann ein Blick in die Sicherheitsprotokolle Ihres Domänencontrollers Aufschluss darüber geben, warum ein Benutzer nicht mehr in den richtigen Gruppen angezeigt wird.
So kopieren Sie die Mitgliedschaft von AD-Benutzergruppen in PowerShell
Methode 1: Einfaches Kopieren von Gruppenmitgliedschaften von einem Benutzer auf einen anderen
Zuerst sollten Sie herausfinden, welchen Gruppen Ihr Quellbenutzer angehört. Hier kommt Get-ADUser zum Einsatz. Verwenden Sie diesen Befehl, um alle Gruppen aufzulisten:
$getusergroups = Get-ADUser –Identity jsanti -Properties memberof | Select-Object -ExpandProperty memberof
Dieser Befehl ruft alle Gruppen ab, jsantidenen der Benutzer angehört. Hinweis: Bei manchen Konfigurationen müssen Sie PowerShell als Administrator ausführen oder das Active Directory-Modul explizit importieren, Import-Module ActiveDirectoryfalls es nicht automatisch geladen wird.
Sobald Sie diese Liste der Gruppen haben, können Sie sie direkt an Add-ADGroupMember weiterleiten, um den neuen Benutzer ( a.adams) allen diesen Gruppen hinzuzufügen:
$getusergroups | Add-ADGroupMember -Members a.adams -Verbose
Das ist im Prinzip logisch – Sie sagen PowerShell einfach: „Nimm all diese Gruppen und füge den a.adamsBenutzer hinzu.“ Wenn alles klappt, ist der Zielbenutzer Mitglied derselben Gruppen wie der Quellbenutzer. Beachten Sie, dass Sie dies wahrscheinlich als Domänenadministrator oder als Benutzer mit delegierten Berechtigungen zum Ändern von Gruppenmitgliedschaften ausführen sollten.
Methode 2: Mehr Flexibilität durch Verwendung von Get-ADPrincipalGroupMembership
Dieses Cmdlet ist etwas universeller – es funktioniert für Benutzer, Computer und Gruppen. Es ist besonders praktisch, wenn Sie Gruppenzugehörigkeiten basierend auf der tatsächlichen Zugehörigkeit des Objekts kopieren möchten, nicht nur auf einer Liste von Gruppen-DN-Zeichenfolgen. So könnte es aussehen:
$userSource= "jsanti" $userTarget= "a.adams" $sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroups
Dieses Skript ruft alle Gruppen ab, jsantidenen die Objekte angehören, und fügt a.adamssie anschließend hinzu. Ganz einfach, oder? Denken Sie nur daran, dass das Cmdlet „Add-ADPrincipalGroupMembership“ das Array der Gruppenobjekte aus dem vorherigen Befehl erwartet.
Auf manchen Rechnern schlägt dies beim ersten Mal fehl, oder es treten seltsame Fehler auf, aber normalerweise lässt sich das Problem durch erneutes Ausführen oder durch Sicherstellen, dass Ihre Sitzung über die richtigen Berechtigungen verfügt, beheben.
Methode 3: Erstellung einer Protokolldatei zur Nachvollziehbarkeit
Wenn Sie dies häufig tun oder einfach nur eine Aufzeichnung für Prüfungszwecke benötigen, ist das Erstellen einer Protokolldatei per Skript sinnvoll. Hier ist ein längeres Skript, das Gruppen und Protokolle bei jedem Schritt kopiert:
$logfile="c:\LOG\CopyAdGroup.log" $userSource= "jsanti" $userTarget= "a.adams" $Time = Get-Date Add-Content $logfile -Value $Time -Encoding UTF8 Add-Content $logfile -Value "_________________" Add-Content $logfile -Value ("Copying AD groups from $userSource to $userTarget") -Encoding UTF8 $sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName foreach ($group in $sourceGroups) { Add-Content $logfile -Value ("Adding $userTarget to $group") -Encoding UTF8 try { $log = Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $group Add-Content $logfile -Value ("Successfully added to $group") -Encoding UTF8 } catch { Add-Content $logfile -Value ("Error: $($Error[0].Exception. Message)") -Encoding UTF8 continue } } Add-Content $logfile -Value "_________________"
Dieses Skript erzeugt Protokolle, die später überprüft werden können, falls etwas Ungewöhnliches passiert. Es ist nicht perfekt, aber es hilft, den Überblick über die Aktionen des Skripts zu behalten, insbesondere in Umgebungen mit hohem Arbeitsaufkommen.
Zusätzliche Tipps: Überwachung und Automatisierung
Um zu sehen, wer welchen Gruppen angehört, überprüfen Sie die Sicherheitsprotokolle Ihres Domänencontrollers und suchen Sie nach Ereignissen zu Änderungen der Gruppenmitgliedschaften. Alternativ können Sie geplante Aufgaben einrichten, die diese Skripte regelmäßig ausführen, sodass die Gruppenmitgliedschaften ohne manuelle Aktualisierung synchron bleiben.
Zusammenfassung
- Verwenden Sie Get-ADUser oder Get-ADPrincipalGroupMembership, um Benutzergruppen aufzulisten.
- Leiten Sie diese Liste an Add-ADGroupMember oder Add-ADPrincipalGroupMembership weiter, um Mitgliedschaften zu klonen.
- Führen Sie Skripte als Benutzer mit ausreichenden Berechtigungen aus – in der Regel als Domänenadministrator.
- Erwägen Sie, alle Änderungen zu protokollieren, um sie später prüfen zu können.
- Achten Sie auf verschachtelte Gruppen und spezielle Berechtigungen, die die Angelegenheit verkomplizieren könnten.
Zusammenfassung
Diese Vorgehensweise beschleunigt Massenbenutzeraktualisierungen und minimiert Fehler im Vergleich zu manuellen Klicks in ADUC. Zugegeben, es braucht etwas Einarbeitungszeit, aber sobald man den Dreh raus hat, ist es eine echte Erleichterung, wenn man das häufiger macht. Behalten Sie einfach die Berechtigungen im Auge und lesen Sie die Dokumentation der Cmdlets, falls etwas Ungewöhnliches auftaucht. Hoffentlich trägt das dazu bei, das Chaos etwas zu reduzieren.