none
Prüfen ob Benutzer einer bestimmten OU einer Benutzergruppe angehören RRS feed

  • Frage

  • Hallo!

    Ich versuche, mittlerweile  schon etwas verzweifelt, ein Powershell Script zu folgender Aufgabe zu erstellen:

    Ich habe ein AD welches über ein anderes System  mit Benutzern befüllt wird (IDM). Diese Synchronisation legt neue Benutzer in einer OU (Beispiel: "Test") an. (Mehr kann es nicht!)

    Die Aufgabe des Scriptes sollte nun sein alle Benutzer mit dem SamAccountName = "b_*", welche  sich in der OU "Test" befinden und nicht der Benutzergruppe "Test1" angehörten diese in der Gruppe zu ergänzen.

    Ich habe mit folgenden Befehlen getestet aber ich schaffe es einfach nicht diese korrekt zu verschachteln:

    'Mit diesem habe ich schon mal die Benutzer auflisten können!

    Get-ADUser -Filter { SamAccountName -Like "b_*" } -Properties MemberOf -SearchBase "OU=test,DC=ad,DC=hausnetz,DC=net"

     

     

    Add-ADGroupMember -Identity "pers" -Members $_.SamAccountName

     

    Danke für Eure Hilfe!

    Mfg. Jochen


    • Bearbeitet Jochen02 Sonntag, 11. Dezember 2011 15:58
    Sonntag, 11. Dezember 2011 14:24

Antworten

  • $users = Get-ADUser -Filter { SamAccountName -Like "b_*" } -Properties MemberOf -SearchBase "OU=test,DC=ad,DC=hausnetz,DC=net" 
    foreach ($user in $users){
    	$found = $false
    	$members = $user.memberof
    	foreach ($member in $members){
    		if ($member.contains("pers")){$found = $true}
    	}
    	if ($found -eq $true){Write-host "$($user.SamAccountName)    -   EXISTING IN GROUP"}
    	else{
    		Write-host "$($user.SamAccountName)   -   ADD USER TO GROUP"
    		Add-ADGroupMember -Identity "pers" -Members $_.SamAccountName
    	}
    }
    

    das hat bei mir funktioniert, musst halt ou etc ersetzen etc
    viel spaß gruß patrick
    Montag, 12. Dezember 2011 06:31
  • Hallo!

    Ich muss mich Bedanken! Das hat wunderbar funktioniert!

    Ergänzend dazu bin ich auch noch auf eine Filtervariante gestoßen die mir ebenfalls das gewünschte Ergebnis liefert!

    Vielleicht könnt ihr es auch gebrauchen!

    Get-ADUser -Filter { SamAccountName -Like "b_*" } -Properties MemberOf -SearchBase "OU=pers,DC=mugad,DC=medunigraz,DC=at" | Where-Object {$_.MemberOf -notcontains "CN=Pers,OU=Gruppen,DC=mugad,DC=medunigraz,DC=at"} | %{Add-ADGroupMember -Identity "Pers" -Members $_.SamAccountName}

    Danke nochmals!

    Lg Jochen

    Montag, 12. Dezember 2011 14:13

Alle Antworten

  • $users = Get-ADUser -Filter { SamAccountName -Like "b_*" } -Properties MemberOf -SearchBase "OU=test,DC=ad,DC=hausnetz,DC=net" 
    foreach ($user in $users){
    	$found = $false
    	$members = $user.memberof
    	foreach ($member in $members){
    		if ($member.contains("pers")){$found = $true}
    	}
    	if ($found -eq $true){Write-host "$($user.SamAccountName)    -   EXISTING IN GROUP"}
    	else{
    		Write-host "$($user.SamAccountName)   -   ADD USER TO GROUP"
    		Add-ADGroupMember -Identity "pers" -Members $_.SamAccountName
    	}
    }
    

    das hat bei mir funktioniert, musst halt ou etc ersetzen etc
    viel spaß gruß patrick
    Montag, 12. Dezember 2011 06:31
  • Hallo Patrick,

    vielleicht könnte man da noch etwas tunen. Es kann ja sein, dass der jeweilige Benutzer in sehr vielen Gruppen Mitglied ist. Wenn jetzt die Gruppe sehr früh in der Schleife gefunden wird, dann läuft trotzdem die Schleife weiter. Ich würde eventuell mit "break" die Foreach Schleife beenden, wenn die Gruppenmitgliedschaft gefunden wurde.

    if ($member.contains("pers")){$found = $true;break}
    
    

    Viele Grüße

    Frank


    -- Frank Röder blog.iteach-online.de --
    • Als Antwort vorgeschlagen KloinerFeigling83 Montag, 12. Dezember 2011 10:38
    • Als Antwort markiert Jochen02 Montag, 12. Dezember 2011 13:49
    • Tag als Antwort aufgehoben Jochen02 Montag, 12. Dezember 2011 13:49
    Montag, 12. Dezember 2011 08:34
  • gehts doch nicht?
    Montag, 12. Dezember 2011 14:02
  • Hallo!

    Ich muss mich Bedanken! Das hat wunderbar funktioniert!

    Ergänzend dazu bin ich auch noch auf eine Filtervariante gestoßen die mir ebenfalls das gewünschte Ergebnis liefert!

    Vielleicht könnt ihr es auch gebrauchen!

    Get-ADUser -Filter { SamAccountName -Like "b_*" } -Properties MemberOf -SearchBase "OU=pers,DC=mugad,DC=medunigraz,DC=at" | Where-Object {$_.MemberOf -notcontains "CN=Pers,OU=Gruppen,DC=mugad,DC=medunigraz,DC=at"} | %{Add-ADGroupMember -Identity "Pers" -Members $_.SamAccountName}

    Danke nochmals!

    Lg Jochen

    Montag, 12. Dezember 2011 14:13