makaroni
Goto Top

Mit Get-ADGroupmember Befehl mehrere AD-Gruppen ausgeben

Hallo zusammen,

ich habe ein kleines Problem beim Auslesen via Powershell von Usern aus Gruppen aus einer Active Directory.

Folgenden Befehl nutze ich unter Anderem:

Get-ADGroupMember -Recursive $AD_Group -Server $Server

Soweit klappt auch alles. Nun möchte ich gerne die GroupMember aus zwei unterschiedlichen Gruppen auslesen.

Get-ADGroupMember -Recursive $AD_Group1, $AD_Group2 -Server $Server

funktioniert leider nicht.

Vielen Dank

Content-ID: 259580

Url: https://administrator.de/contentid/259580

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

114757
Lösung 114757 12.01.2015 aktualisiert um 11:57:39 Uhr
Goto Top
get-adgroup -Server $Server -Filter * | ?{$_.Name -eq $AD_Group1 -or $_.Name -eq $AD_Group2} | Get-AdGroupmember -Recursive -Server $Server
Gruß jodel32
makaroni
makaroni 12.01.2015 aktualisiert um 13:55:12 Uhr
Goto Top
Ich benötige noch einmal deine Hilfe:
$AD_Group1 = "Internet"  
$AD_Group2 = ""  
$AD_Group3 = ""  
$AD_Group4 = ""  
$AD_Group5 = ""  


$all = @() 
$all += Get-ADGroup -Server $Server -Filter * | ?{ $_.Name -eq $AD_Group1 -or $_.Name -eq $AD_Group2 -or $_.Name -eq $AD_Group3 -or $_.Name -eq $AD_Group4 -or $_.Name -eq $AD_Group5 -or $_.Name -eq $AD_Group6 } | Get-ADGroupMember -Recursive -Credential $cred
#$all += Get-ADGroup -Server $Server -Filter * | ?{ $_.Name -eq $AD_Group1 -or $_.Name -eq $AD_Group2 -or $_.Name -eq $AD_Group3 -or $_.Name -eq $AD_Group4 -or $_.Name -eq $AD_Group5 -or $_.Name -eq $AD_Group6 } | Get-ADGroupMember | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive -Credential $cred 

So habe ich mir das nun zusammengebastelt. Auf dem einen Server läuft es soweit durch und funktioniert, auf dem anderen hingegen leider nicht. Mach ich irgendwas falsch? Es wird auch keine Fehlermeldung ausgegeben. Ich möchte gerne bis zu fünf Gruppen auslesen können. Wenn ich hingegen nur eine Gruppe auslesen möchte, reicht es dann wenn in den anderen nichts steht oder werden dann fehlerhafte Daten ausgeworfen?
114757
Lösung 114757 12.01.2015 aktualisiert um 14:59:34 Uhr
Goto Top
Die Variable $AD_Group6 existiert in deinem Code nicht ... und du gibst beim letzten Befehl in der Pipeline den Servernamen nicht mit...

Das ganze lässt sich alternativ flexibler so machen, alle Gruppen in ein Array schreiben und dann darüber iterieren:
$all = @()
$gruppen = @("Gruppe1","Gruppe2","Gruppe3")  
$gruppen | %{$all += Get-ADGroupMember $_ -Recursive -Server $Server -Credential $cred -EA SilentlyContinue}
makaroni
makaroni 20.01.2015 aktualisiert um 14:29:17 Uhr
Goto Top
Ich habe noch eine kleine Frage.

ich möchte mir gerne die Benutzer Plus die darin erhaltene Gruppe ausgeben lassen

$all | select -Unique | %{$text += ($_.SamAccountName + $gruppen )} 

Den Accountnamen kann ich mir anzeigen lassen, nur die Gruppen werden beide zusammen, was ja auch korrekt ist, ausgegeben.
Ich möchte es allerdings gerne wie folgt haben:

User 1 Internet1
User 1 Internet2
User 2 Internet1
User 3 Internet2

Wie kann ich das filtern?
114757
114757 20.01.2015 aktualisiert um 19:11:59 Uhr
Goto Top
ich sag nur .memberOf Attribut des Users face-wink
Und lerne erst mal Powershell vernünftig anstatt hier das Forum mit solchen Banalitäten vollzuknallen.
http://www.microsoftvirtualacademy.com/training-courses/using-powershel ...
makaroni
makaroni 21.01.2015 um 08:50:06 Uhr
Goto Top
Ja das ist mir bewusst, dann bekomme ich aber alle Gruppen, in dem der Nutzer ist.
Ich lese Benutzer aus den Gruppen x und y aus.
Nun möchte ich gerne die Benutzer so anzeigen lassen, dass Benutzername und nur die Gruppe x oder y angezeigt wird.

Beispiel:

Gruppen = x,y

Benutzer Harald ist in der Gruppe x
Benutzer Ingo in der x und y Gruppe
Benutzer Paul in der y Gruppe

Ausgabe:

Harald x
Ingo x
Ingo y
Paul y

Es sollen also nicht die kompletten Gruppen ausgelesen werden, sondern lediglich die, nach denen ich gerade suche.
Nutze ich das Array bekomme ich als Ausgabe:

Harald x
Ingo x y
Paul y
114757
Lösung 114757 21.01.2015 aktualisiert um 09:19:39 Uhr
Goto Top
$gruppen = @("Gruppe1","Gruppe2","Gruppe3")  
foreach($group in $gruppen){
    Get-ADGroupMember $group -Recursive -Server $Server -Credential $cred -EA SilentlyContinue | %{write-host "$($_.SamAccountname) : $group"}  
}