Jump to content

AD Abfrage mit Ausnahmen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hi,

ich möchte allen Usern einer Abteilung im AD eine Gruppe UG-User-TEST hinzufügen, außer bei Usern, bei denen in der Description Student steht, die sollen nicht Mitglied der Gruppe werden. Irgendwie klappt das aber nicht so richtig, siehe:

 

$user = Get-ADUser -Filter {(Department -eq "Testabteilung") -and (Description -notlike "Student")}

$group = Get-ADGroup "CN=UG-User-TEST,OU=HV,DC=xxxint,DC=local"

 

Add-ADGroupMember $group –Members $user

 

Fehler:

Add-ADGroupMember : Das Argument für den Parameter "Members" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen

Sie den Befehl erneut aus.

In Zeile:6 Zeichen:35

+ Add-ADGroupMember $group –Members $user

+                                   ~~~~~

    + CategoryInfo          : InvalidData: (:) [Add-ADGroupMember], ParameterBindingValidationException

    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

 

 

Wenn ich nur eine Abfrage mache, wie z.B. (Department -eq "Testabteilung"oder (Description -notlike "Student") funktioniert es aber! Was mache ich bei notlike falsch??

Geschrieben

Habs hinbekommen, so funktioniert es....

$group = Get-ADGroup "CN=UG-User-TEST,OU=HV,DC=xxxint,DC=local"

Get-ADUser -SearchBase "DC=xxxxxint,DC=local" -Filter "sAMAccountName -like 'xx*'" -Properties * | Where-Object {($_.Description -Notlike "Student") } | Add-ADPrincipalGroupMembership -MemberOf $Group

Geschrieben (bearbeitet)
$filteredUsers = Get-ADUser -Filter * | Where-Object {($_.Description -Notlike "Student") }
Get-ADGroup -Identity "UG-User-TEST" | Add-ADGroupMember -Members $filteredUsers

Das ist mein Vorschlag. Ich habe deinen Code optimiert, denn er korrigiert:

  • Nicht benötigte Eingaben -> "CN=UG-User-TEST,OU=HV,DC=xxxint,DC=local"
  • Falsches cmdlet -> In dem Fall würde man Add-AdGroupMember nutzen, denn man möchte den User in nur eine Gruppe, nicht mehreren, hinzufügen.
  • Die User werden einzeln im AD hinzugefügt. Das kostet Zeit und Ressourcen. Hier ist es besser alle User auf einmal zu übergeben und dem cmdlet die Übergabe zu überlassen
  • Man sollte immer nur die generierten Objecte an die gleiche Befehlsgruppe (Get-AdGroup -> Add-AdGroupMember) übergeben, die diese auch implicit erwartet
  • Code sollte leicht lesbar und verständlich sein. Das erleichtert die Fehlerfindung und Anpassung enorm. Bspw. wenn ein Zeit zwischen dem Erstellen und der Anpassung vorhanden ist.

 

PS: Getestet ist er nicht, sollte aber auch so funktionieren :-) 

bearbeitet von MurdocX
  • Like 3
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...