Zum Inhalt wechseln


Foto

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

Active Directory

  • Bitte melde dich an um zu Antworten
2 Antworten in diesem Thema

#1 rmw-home

rmw-home

    Newbie

  • 2 Beiträge

 

Geschrieben 07. Januar 2017 - 12:16

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
 



#2 BOfH_666

BOfH_666

    Junior Member

  • 93 Beiträge

 

Geschrieben 07. Januar 2017 - 18:21

$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ß


Bearbeitet von BOfH_666, 07. Januar 2017 - 18:23.

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#3 rmw-home

rmw-home

    Newbie

  • 2 Beiträge

 

Geschrieben 07. Januar 2017 - 20:38

Servus,

 

cool. Klappt wunderbar.

 

Vielen Dank

 

Gruß

 

Rainer





Auch mit einem oder mehreren der folgenden Tags versehen: Active Directory