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:
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."
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 63778753590
Url: https://administrator.de/contentid/63778753590
Printed on: May 6, 2024 at 02:05 o'clock
4 Comments
Latest comment
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.
Wenn du die LDAP Abfragesyntax nicht magst dann kannst du den Abfragefilter als Alternative auch über den normalen Filter definieren
Gruß Schrick
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
Moin,
Merke: Hole immer nur die Daten, die Du auch brauchst! 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:
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.
Liebe Grüße
Erik
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".
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! 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.
Liebe Grüße
Erik