Powershell Filtern
Hi,
ist vielleicht ne blöde Frage aber wie kann ich nach einem Property Filtern?
Ziel des Skriptes ist es alle User aus dem AD aufzulisten die nicht in der Gruppe Passwort sind.
Das Script zeigt mir jetzt schon mal alle User mit den Properties an...jetzt will ich im Endeffekt die User rausfiltern sind nicht in der Gruppe Passwort sind. Diese User sollen das aufgelistet werden.
Gruß
Matthias
ist vielleicht ne blöde Frage aber wie kann ich nach einem Property Filtern?
Ziel des Skriptes ist es alle User aus dem AD aufzulisten die nicht in der Gruppe Passwort sind.
Get-ADUser -Filter { Name -Like "*" } -SearchBase "OU=Benutzer,DC=CONTOSO,DC=DE" -Properties *
Das Script zeigt mir jetzt schon mal alle User mit den Properties an...jetzt will ich im Endeffekt die User rausfiltern sind nicht in der Gruppe Passwort sind. Diese User sollen das aufgelistet werden.
Gruß
Matthias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 215456
Url: https://administrator.de/forum/powershell-filtern-215456.html
Ausgedruckt am: 21.12.2024 um 06:12 Uhr
6 Kommentare
Neuester Kommentar
<dein_kommando> | where {$_ -match "<dein_muster>"}
eher<dein_kommando> | where {$_ -NOmatch "<dein_muster>"}
Hallo Matthias,
das kannst du zuverlässiger so machen:
Es zeigt dir alle Nutzer die nicht in der Gruppe Passwort sind.
Grüße Uwe
das kannst du zuverlässiger so machen:
#hole alle Benutzer im AD
$allUsers = Get-AdUser -Filter *
#hole nur die Benutzer in der Gruppe "Passwort" inklusive User in Untergruppen
$groupPassUsers = Get-AdGroupMember -Identity "Passwort" -recursive
#Vergleiche beide Objekte miteinander und ziehe die Nutzer in der Gruppe "Passwort" davon ab
$diffUsers = Compare-Object -ReferenceObject $allUsers -DifferenceObject $groupPassUsers
$diffUsers
Grüße Uwe
Hallo,
"where {$_ -match "PASSWORT"}" kann nicht so richtig funktionieren, weil du nicht angibst, welches Property gematcht werden soll.
Ich würde einen Test mit " | where {$_.memberOf -notlike "*CN=PASSWORT,OU=Gruppen*"} " empfehlen (ich bilde mir auch ein, dass -notlike/-like schneller als -nomatch/match sein, weil letztere auch RegEx parsen).
Gruß
Filipp
Edit: alle hier gezeigten Ansätze haben natürlich den Nachteil, dass sie erst alle Nutzer laden, und dann die unerwünschten mit "where" aussortieren. Hübscher wäre es, gleich nur die richtigen zu bekommen. Mit dem "-Filter"-Attribut kann man nicht immer alles filtern, was man will, wie es sich bei Get-ADUser verhält weiß ich nicht. Aber mindestens mit dem -LDAPFilter-Attribut kann man die Auswahl von vorneherein auf die gewünschten Nutzer einschränken. Websuche nach "get-aduser filter group" hilft dir bestimmt weiter.
Edit 2:
"where {$_ -match "PASSWORT"}" kann nicht so richtig funktionieren, weil du nicht angibst, welches Property gematcht werden soll.
Ich würde einen Test mit " | where {$_.memberOf -notlike "*CN=PASSWORT,OU=Gruppen*"} " empfehlen (ich bilde mir auch ein, dass -notlike/-like schneller als -nomatch/match sein, weil letztere auch RegEx parsen).
Gruß
Filipp
Edit: alle hier gezeigten Ansätze haben natürlich den Nachteil, dass sie erst alle Nutzer laden, und dann die unerwünschten mit "where" aussortieren. Hübscher wäre es, gleich nur die richtigen zu bekommen. Mit dem "-Filter"-Attribut kann man nicht immer alles filtern, was man will, wie es sich bei Get-ADUser verhält weiß ich nicht. Aber mindestens mit dem -LDAPFilter-Attribut kann man die Auswahl von vorneherein auf die gewünschten Nutzer einschränken. Websuche nach "get-aduser filter group" hilft dir bestimmt weiter.
Edit 2:
$diffUsers = Compare-Object -ReferenceObject $allUsers -DifferenceObject $groupPassUsers
Ich kann das gerade (mangels Server) nicht testen - funktioniert das? Ich dachte, Get-AdUser liefert einen User, während Get-AdGroupMember einen anderen Datentyp liefert (GroupMember können ja auch Gruppen und im Zweilfesfall sogar Kontakte sein), und die Datentypen lassen sich nicht vergleichen (wenn man wiederum nur den DN selektiert, müsste es gehen)