tobi1983
Goto Top

Größenlimit für eine Anforderung wurde überschritten

Hallo zusammen,

ich habe mir ein Script gebastelt was mir allerdings bei 12000 Gruppenmitgliedern in die Bremse geht und mir den Fehler ausgibt "Das größenlimit für diese anforderung wurde überschritten".

Hat jemand eine Idee wie man das ganze umgehen kann, ohne irgendwas am DC zu ändern?

Bin noch PS Anfänger und bin am verzweifeln, daher ein Hilferuf...

Hier mein Script:


$groupName = "Testgruppe"  
$domainController = "TESTDOMAIN"  

$group = Get-ADGroup -Identity $groupName -Server $domainController

if ($group -eq $null) {
    Write-Host "Die Sicherheitsgruppe '$groupName' wurde nicht gefunden."  
} else {
      $members = Get-ADGroupMember -Identity $group -Server $domainController
    
    foreach ($member in $members) {
        if ($member.ObjectClass -eq "user") {  
            $user = Get-ADUser -Identity $member -Server $domainController
            if (-not $user.Enabled) {
                Remove-ADGroupMember -Identity $group -Members $user -Server $domainController -Confirm:$false
                Write-Host "Der deaktivierte Benutzer $($user.Name) wurde aus der Sicherheitsgruppe entfernt."  
            }
        }
    }
    
    Write-Host "Alle deaktivierten Benutzer wurden erfolgreich aus der Sicherheitsgruppe entfernt."  
}

Content-ID: 63778753590

Url: https://administrator.de/forum/groessenlimit-fuer-eine-anforderung-wurde-ueberschritten-63778753590.html

Ausgedruckt am: 10.04.2025 um 04:04 Uhr

Dani
Dani 23.04.2024 um 19:08:12 Uhr
Goto Top
Tobi1983
Tobi1983 23.04.2024 um 20:24:29 Uhr
Goto Top
Moin, mit der Methode schreibt er mir allerdings alle Member aus der Gruppe heraus.
Er soll mir nur die deaktiverten User aus der Gruppe entfernen und die aktiven Accounts als Member belassen.

Gibt es eine Methode mit der man in intervallen von 1000 Mitgliedern pro Runde oder so abfragt bis die Gruppe durchlaufen wurde ?

Hatte es auch schon mit "Pagesize" versucht aber hatte auch kein erfolg gebracht... face-sad
12764050420
12764050420 23.04.2024, aktualisiert am 24.04.2024 um 10:02:31 Uhr
Goto Top
Hi.
Immer besser direkt die Filter der Funktionen nutzen statt sich erst alle User zu holen und alle nacheinander einzeln durch zu ackern! Spart Unmengen an Zeit und Ressourcen bei der Menge an Mitgliedern.
$group = "CN=Testgruppe,CN=Users,DC=Domain,DC=de"  
$disabledUsersInGroup = Get-AdUser -LdapFilter "(&(memberof=$group)(userAccountControl:1.2.840.113556.1.4.803:=2))"  
if ($disabledUsersInGroup){
     Remove-ADGroupMember -Identity $group -Members $disabledUsersInGroup -Confirm:$false -verbose
}

Wenn du die LDAP Abfragesyntax nicht magst dann kannst du den Abfragefilter als Alternative auch über den normalen Filter definieren
$disabledUsersInGroup = Get-ADUser -Filter "enabled -eq 'false' -and memberof -eq '$group'"  

Gruß Schrick
erikro
erikro 24.04.2024 um 09:36:53 Uhr
Goto Top
Moin,

Zitat von @Tobi1983:
ich habe mir ein Script gebastelt was mir allerdings bei 12000 Gruppenmitgliedern in die Bremse geht und mir den Fehler ausgibt "Das größenlimit für diese anforderung wurde überschritten".

Merke: Hole immer nur die Daten, die Du auch brauchst! face-wink Du fragst erst alle User ab, um sie dann alle einzeln zu untersuchen. Das ist Unsinn. Filtere erst nach den Usern, die Du auch wirklich brauchst und schicke sie dann in die Schleife. Ansonsten ist die Aufgabe ein Einzeiler:

Get-ADGroupMember -identity gruppenname | ?{$_.objectclass -eq "user"} | get-aduser | ?{$_.enabled -eq $false} | %{Remove-ADGroupMember -Identity gruppenname -Members $_}  

Das kann man auch noch hübscher machen mit Fehlerbehandlung und Meldungen und evtl. eine for-each-Schleife statt for-EachObject. Aber das kriegst Du bestimmt hin. face-wink

Liebe Grüße

Erik
Tobi1983
Lösung Tobi1983 29.05.2024 um 20:05:03 Uhr
Goto Top
Erstmal vielen Dank für die schnelle Hilfe,

ich habe es nun mit folgendem Script gelöst bekommen.

$Group = "MUSTERGRUPPE"  
$Users = (Get-ADGroup $Group -Properties Member).Member |Get-ADUser| % {Get-ADUser $_.SamAccountName} | Where Enabled -EQ $false
Remove-ADGroupMember $Group -Members $Users