Jump to content

Mit Powershell mehrere Active Directory Gruppen auslesen und die Gruppenmember in Datei ausgeben


Recommended Posts

Servus,

ich fummele gerade an einer Aufgabe:

1. Finde alle Gruppen einer Active Directory Domäne welche einen bestimmten Namensbestandteil haben
2. Liste die Gruppenmitglieder in einer Datei. Formatiert nach Username, DisplayName und Mailadresse
3. Da es mehrere Gruppen mit dem gleichen Namensbestandteil gibt, und Benutzer in mehreren Gruppen Mitglied sein können soll die Liste darüber Auskunft geben.
Beispielsweise Username Displayname Mailadresse Gruppenname
User1 User1,name 1@1.de Gruppe 1
User1 User1,name 1@1.de Gruppe 5
User1 User1,name 1@1.de Gruppe 7
User2 User2,name 2@1.de Gruppe 1
und so weiter....

Bisher bin ich so vorgegangen:
Import-module ActiveDirectory
#Gruppennamen in Variable Laden
$array = Get-Adgroup -filter {name -like "GruppeXX*"} | select –exp Name

Dies liefert mir als Ergebnis der Variablen $Array 56 Gruppennamen

#Gruppenmitglieder in Datei exportieren
foreach ($element in $Array) { Get-ADGroupMember -Identity $element | Get-Aduser -Properties name, DisplayName, Mail | Select-Object name, DisplayName, Mail >> C:\Scripte\2017\Januar\GruppenMitglieder.txt}

Dies liefert mir eine Datei welche die Gruppenmitglieder wie gewünscht in 3 Spalten mit den gewünschten Inhalten ausgibt. Dann aber nach den Gruppenmitgliedern der gruppe 1 drei Leerzeilen einfügt und wieder mit dem Inhalt der nächsten Gruppe weitermacht :

name DisplayName Mail 
 

 

----------- ---- 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 



name DisplayName Mail 
 

 

----------- ---- 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 
xxxxxx xxxxxxx Email@Email.de 

Wie bekomme ich hin, dass der Gruppenname ebenfalls in die Liste eingetragen wird. Am besten wie oben beschrieben als 4 Tabellenfeld

Gruß

Rainer
 

Link to comment
$Array = Get-ADGroup -Filter "Name -like 'GruppeXX*'" | Select-Object -ExpandProperty Name
$Liste = foreach ($element in $Array) {
    Get-ADGroupMember -Identity $element  | 
        Get-Aduser -Properties name, DisplayName, Mail | 
            Select-Object name, DisplayName, Mail,@{Name='Group';Expression={$element}}
}
$Liste
$Liste | Export-Csv -Path C:\Scripte\2017\Januar\GruppenMitglieder.csv -NoTypeInformation -Delimiter ';'

Vielleicht hilft Dir das ja weiter. Wenn Du Daten hast, die quasi eine Tabelle darstellen, macht es mehr Sinn, diese auch als solche zu exportieren. Das kannst Du mit Export-CSV erledigen.

Um die einzelnen Gruppen dann noch auseinanderzuhalten, hab ich mal eine weitere Spalte mit dem Gruppennamen hinzugefügt. Du könntest natürlich auch jeweils eine Datei pro Gruppe machen.

 

Noch ein Tipp für dieses Forum (vielleicht auch für alle Foren): Es zeugt von gutem Stil, wenn man Code postet, diesen auch als solchen zu formatieren. Dafür gibt es entsprechende Optionen in den jeweiligen Editoren. Und es macht Dir und den Menschen, die Dir helfen sollen das Leben einfacher, wenn Du möglichst keine Aliasse und Abkürzungen verwendest und entsprechende Einrückungen verwendest.

 

Na denn ... viel Spaß

Edited by BOfH_666
  • Like 1
Link to comment
  • 5 years later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...