Powershell Abfrageskript

PSNIK

Cadet 3rd Year
Registriert
Feb. 2010
Beiträge
47
Hallo Zusammen,

ich bräuchte bei diesem Thema mal eure Hilfe.
Ich benötige eine Ausgabe der Domänenbenutzer, die ausschließlich Mitglieder der Gruppe "domänen-benutzer" sind.

Bisher habe ich's nur geschafft mir die Mitglieder dieser Gruppe ausgeben zu lassen, jedoch ohne Berücksichtigung, ob diese noch Mitglieder weiterer Gruppen sind.
PowerShell:
Get-ADGroupMember domänen-benutzer | Get-ADUser |sort | ft name,givenname,surname

Da meine Powershell-Kentnisse leider etwas zu wünschen übrig lassen, würde ich mich über Ideen und Anregungen sehr freuen.

Viele Grüße
Meik
 
Dafür muss man für alle Benutzer prüfen, dass sie nicht in mehr Gruppen drin sind (oder gibt es einen einfacheren Weg?).

ungetestet:
Code:
$users= Get-ADGroupMember "Domain Users"
$users | foreach-object {
     if ((Get-ADPrincipalGroupMembership $_ | Measure-Object).Count -eq 1){
         Write-Host $_.name
     }
}
 
  • Gefällt mir
Reaktionen: PSNIK
"Domain Users" musste in meinem Fall angepasst werden, aber ansonsten funktionierts bestens.
Herzlichen Dank!
 
@kartoffelpü Sollte man denken, dass das einfacher geht, ja... aber wohl halt nicht mit Microsofts LDAP Implementierung. 🤔

Tatsache ist, dass postfiltering aufwendiger ist und daß für diesen Fall praktisch alle Domainuser herangezogen werden müssen.... daher an der Stelle der Vorschlag, dass man dann das rauskitzelt was noch geht. In etwa so:
PowerShell:
Get-AdGroupMember 'Domain Users' | <# bei Bedarf noch mit -Recurse, wenn es in Domain Users auch noch Gruppen geben sollte) #>
Where-Object { (Get-AdPrincipalGroupMembership -Identity $_).Count -eq 1 }

Konkret für die Domain Users mag es sogar schneller gehen, wenn man Get-AdUser -Ldapfilter '(objectClass=user)' sagt und dann unter Where-Object eine Abfrage auf "ist Domain Users in der memberof-Liste mit drin" hinzufügt. Besonders, wenn "Domain Users" nochmal verschachtelt sein sollte.

Aber schön ist das zugegebenermaßen alles nicht.... Get-AdPrincipalgroupmembership dauert lange und man braucht das dann für praktisch jeden Benutzer, da wäre es vermutlich irgendwann wirklich besser, foreach zu nehmen (nicht foreach-object!) und dann da ein write-progress reinzustopfen.
 
Zurück
Oben