PowerShellAdmin 169 Geschrieben 17. April 2013 Melden Teilen Geschrieben 17. April 2013 (bearbeitet) Moin zusammen, ich habe ein Problem mit der Abfrage Get-ADGroupMember -> Size Limit exceeded -> Die Gruppen können > 5000 Mitglieder haben. Zur Situation, ich habe in einer OU diverse Gruppen in Domäne 1. Diese Domäne 1 ist quasi die übergeordnete Organisation für die Konfiguration. Je Gruppe sind aus 7 Standorten (ebenfalls eigene Domänen mit Vertrauenseinstellungen verbunden) gleichnamige Gruppen zugewiesen und innerhalb dieser Gruppen liegen an den Standorten direkt oder indirekt die User. Das Problem: Ich habe eine einfache Abfrage im Skript an zwei Stellen und hier macht mit Get-ADGroup ärger. $winUserList = Get-ADGroup -identity "Gruppenname" -properties Members -recursive # | Get-ADUser -Properties * Beispiel - die Abfrage wird nur auf die Gruppe in der Konfigurationsdomäne gestartet, hier können die Mitarbeiter effektiv durch diverse Gruppenhierachien verteilt liegen. Testgruppe@Hauptdomäne ->Testgruppe@Standort1 ->Mitarbeitergruppe@Standort1 ->User1 ->UserN... ->Testgruppe@Standort2 ->Mitarbeitergruppe@Standort2 -User10 -UserN... ->Buchhaltunggruppe@Standort2 -User20 -Usern.. Als Alternative hatte ich nun - das stimmt allerdings auch noch nicht, da hier Benutzer mehrfach vorhanden sein können. $grp = Get-ADGroup "Gruppenname" -properties Members $winuserList= $grp.members |Get-ADGroupMember -Recursive |Get-ADUser -Properties userprincipalname, givenname, surname, EmailAddress Allerdings besteht das Problem ja weiterhin, wenn die Untergruppe > 5000User hätte Sollte ich auf die QAD Addins ausweichen ?- Laut Inet kann man das Limit hier festsetzen. Allerdings setze ich ungern auf fremde Lösungen. VG Admin bearbeitet 17. April 2013 von PowerShellAdmin Zitieren Link zu diesem Kommentar
magman 10 Geschrieben 17. April 2013 Melden Teilen Geschrieben 17. April 2013 Hi bei Get-ADGroup gibt es die Option -ResultSetSize Setzt man die auf $null sollten alle Objekte genommen werden. Leider kann ich es nicht testen da wir kein so großes AD haben gruß Martin Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 17. April 2013 Autor Melden Teilen Geschrieben 17. April 2013 (bearbeitet) Hallo Martin,mit Get-ADGroup kann ich allerdings keine rekursive Verschachtelung abbilden.Allerdings habe ich nun konzepttechnisch festgestellt, dass dies überhaupt nicht notwendig ist und ich dies über verschachtelte Schleifen doch abbilden kann (meine Beschreibung obig von der Verschachtelung stimmt so also nicht).Hatte mich jetzt sogar mit QAD an eine Lösung getastet, werde aber womöglich doch auf Get-ADGroup. Teste das erstmal mit den QAD Queries und anschließend mit den Get-ADGroup. Technisch liegt die Begrenzung wohl an der Konfiguration der DC - man kann wohl das Limit erhöhen (für alle DC der jeder betroffenen Organisation notwendig). http://technet.microsoft.com/en-us/library/dd391908%28WS.10%29.aspx Das ist allerdings ausgeschlossen .... Bis Dato habe ich immer auf QAD CMDlets verzichtet, hoffe das klappt jetzt auch noch - Immerhin sind diese von der Performance schlecht und zumeist unnötige 3. Tools :/. Gerade Performance ist ein wichtiger Aspekt, da man umfangreiche AD Queries je nach Technik 20 oder auch nur 30 Sekunden dauern können - mit dem selben Ergebnis ;) Kleines Feedback, Get-ADGroup ist leider nicht geeignet.Ich arbeite mit Domain Local Gruppen, darunter liegen Globale Sicherheitsgruppen in den jeweiligen Organisationen. On the fly kann man das so leider nicht umsetzen. Ich nehme an das geht auch, soweit man je Get-ADGroup die DC definiert. Ich bin gespannt wie sich die QAD Lösung mit den Schleifen am Ende schlägt, mein Verdacht ist, dass die zusätzlichen Abfragen kaum ins Gewichtfallen, da die eigentliche Verzögerung bei der AD Query ist. bearbeitet 17. April 2013 von PowerShellAdmin Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 24. April 2013 Autor Melden Teilen Geschrieben 24. April 2013 (bearbeitet) So ein kleines Feedback, ich hatte das Ganze zwischenzeitlich via diverser Schleifen und QAD-Getgroupmember gelöst. Es gibt diverse Alternativen, aber diese sind "scheiße", sobald man mit mehreren Domänen arbeitet und zumeist ziemlich unschön. Nun habe ich doch eine Lösung gefunden, die ähnlich wie get-adgroupmember arbeitet - ohne Limitierung, dazu rekursiv und auch durch diverse Verschachtelungen keine Probleme zeigt. Toller Nebeneffekt - das Ding ist ziemlich performant und kann in der PowerShell nativ ausgeführt werden - .NEt3.5 Code Quelle: http://stackoverflow.com/questions/8055338/listing-users-in-ad-group-recursively-with-powershell-script-without-cmdlets?rq=1 Kommentar von Shay Levy #This will get all members of the domain Administrators group, including nested members (requires .NET 3.5). $Recurse = $true $Group ='Samaccountname der Gruppe' Add-Type -AssemblyName System.DirectoryServices.AccountManagement $ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain $group=[System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($ct,$Group) $group.GetMembers($Recurse)| select EmailAddress, Distinguishedname, Givenname, Surname bearbeitet 24. April 2013 von PowerShellAdmin 1 Zitieren Link zu diesem Kommentar
magman 10 Geschrieben 24. April 2013 Melden Teilen Geschrieben 24. April 2013 Danke So infos kann man immer mal gebrauchen Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 24. April 2013 Autor Melden Teilen Geschrieben 24. April 2013 Gerne - übrigens hat sich die Abfrage bei 27.000 Benutzern (in 10 Gruppen verteilt) und 3 Attributen von 25 auf 6 Minuten reduziert. Die Questmodule haben die Anfrage verlangsamt - Daher bin ich auch kein Freund von 3. Anbieterlösungen (außer es muss sein). Hoffentlich findet der Nächste dann die Lösung :) - Mit weniger Googelei VG Admin Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.