v-m-r-de
Goto Top

Export der E-Mail-Adressen aus AD-Verteilerliste

Hallo,

folgendes Problem:

Wir sollen die E-Mail-Adressen aller Mitglieder einer Verteilerliste in eine csv oder txt Datei exportieren.

zb. Verteilerliste "V_Kino" mit den Usern "User1" und "User2" und einer weiteren Verteilerliste "V_TV" (dort ist dann user3 drin)
Jetzt soll am Ende was rauskommen wo dann in der Datei
user1@domäne.tld
user2@domäne.tld
user3@domäne.tld
Gern kann hier auch noch der User Name erscheinen.

Wichtig ist nur, dass auch die verschachtelten Verteilerliste aufgelöst und exportiert werden.

Gibt es da ein Tool?
LDIFDE haben wir uns shcon angesehen. Komme da aber nicht an die Mail Adressen ran.

HAbt Ihr noch einne guten Tipp für uns?

Gruß und Danke,
Volker

Content-ID: 121992

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

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

Labamba81
Labamba81 04.08.2009 um 14:43:05 Uhr
Goto Top
Ich selber hab das (E-Mails aus AD-Verteiler auslesen) noch nie gemacht, aber wenn ich etwas aus dem AD auslesen will (z.B. wer welches Loginscript benutzt) dann nehm ich Jose

http://www.faq-o-matic.net/2008/10/29/jos-active-directory-dokumentatio ...
v-m-r-de
v-m-r-de 04.08.2009 um 15:07:51 Uhr
Goto Top
Hi Lambada81,

danke für den Tipp. Aber "Jose" exportiert nur die E-Mail-Adresse des Verteilers und nicht die Adressen der Mitglieder des Verteilers.

Hat noch jemand eine Idee?

Gruß,
Volker
filippg
filippg 04.08.2009 um 15:34:43 Uhr
Goto Top
Hallo,

schaue z.B. hier: http://dmitrysotnikov.wordpress.com/2008/05/05/nested-ad-groups-and-pow ... (benötigt PowerShell, aber die kannst du einfach auf irgendeinem PC installieren (und gehört ohnehin zu den Tools, die man installiert haben sollte)). Der Suchbegriff "group member nesting" liefert weitere Fundstücke.

Gruß

Filipp
SlainteMhath
SlainteMhath 04.08.2009 um 15:53:47 Uhr
Goto Top
Hi,

Das geht mit Bordmitteln auf der Kommandozeile:

dsquery group -name "<gruppennname>" | dsget group -members -expand | dsget user -email  

lg,
Slainte
filippg
filippg 04.08.2009 um 16:06:33 Uhr
Goto Top
Hallo,

dsquery group -name "<gruppennname>" | dsget group
-members | dsget user -email
das war mir neu. Allerdings ist ein Fehler drin, so wie geschrieben werden verschachtelte Gruppen nicht aufgelöst. Laut http://technet.microsoft.com/en-us/library/cc731202(WS.10).aspx muss das "dsget group -member" noch um ein "-expand" ergänzt werden.

Gruß

Filipp
SlainteMhath
SlainteMhath 04.08.2009 um 16:09:47 Uhr
Goto Top
... "dsget group -member" noch um ein "-expand" ergänzt werden. ...
Stimmt, danke fuer den Hinweis face-smile
v-m-r-de
v-m-r-de 04.08.2009 um 16:37:42 Uhr
Goto Top
Hallo,

vielen Dank für den Tip!

Es klappt auch schon fast alles.
Jetzt haben wir noch noch das Problem, dass dsget abbricht, sobald in der Verteilerlsite nicht nur User sondern auch Kontakte vorhanden sind.

Kann man das mit dsget auch abfangen?

Gruß,
volker
v-m-r-de
v-m-r-de 05.08.2009 um 00:06:19 Uhr
Goto Top
Hallo,

das mit dem Abbrechen haben wir zum Teil schon gefunden

Parameter "-c" ist die Lösung.

Aber das nächste Problem ist schon wieder da:
Sobald in der Verteilerliste ein Kontakt vorhanden ist, werden keine verschachtelten Gruppen und Verteilerliste exportiert.

Hat noch jemand eine Idee?
Danke,
Volker
SchoSeb
SchoSeb 05.08.2009 um 08:32:31 Uhr
Goto Top
Hi Volker,

soll in der Datei auch die Mail Adresse der Verteiler drin stehn oder nur die Adressen der User/Kontakte?
Nur Mail Adresse oder auch den jeweiligen Namen des Benutzers/Kontakts?
Könnte ne Lösung in VBS anbieten wenn das auch recht isface-smile
Is zwar etwas umfangreicher, aber erfüllt durchaus den gewünschten Zweck.

Gruß
v-m-r-de
v-m-r-de 06.08.2009 um 00:38:55 Uhr
Goto Top
Hi,

die Adresse vom Verteiler brauchen wir nicht.
Nur die aller Member und deren Namen, also so in etwa

Name; Vorname; e-mail-Adresse User
Mustermann; Max; msx.mustermann@firma.de

Sind über jede Lösung glücklich.
Sonst dürfen wir jeden Tag alles abtippen.

Gruß,
Volker
SchoSeb
SchoSeb 06.08.2009 um 09:11:32 Uhr
Goto Top
Hi,

dann versuchs mal damit, du musst nur die Konstanten anpassen:


Die Datei liest eine gegebene Verteilergruppe Rekursiv aus und schreibt
Name, Vorname und Email des Users in eine Datei.
Die "Do while true" schleife ist eine Quick and Dirty Lösung um Vorzeitig in der
For Schleife zum Next zu springen, da es kein "continue" gibt.
Ohne die Schleife wird auch die Mail Adresse enthaltener Verteiler ausgelesen
jedoch kann es sein, dass der Verteiler die ausgelesenen Felder nicht unterstützt.

Dim objDomain, objUser
Dim objGroup, objFSO, objFile

Const ForAppending = 8
Const FILENAME = "verteiler.csv"  

'LDAP Pfad zur OU in der sich die Group befindet, z.B. im Ordner "Ordner1",   
'einer Domain test.local  
Const PATH = "OU=Ordner1,DC=test,DC=local"   

'Name der auszulesenden Group  
Const GROUPNAME = "verteiler"  


' Objekt der Gruppe anlegen  
Set objDomain = GetObject("LDAP://"& PATH )  
set objGroup = objDomain.GetObject("group", "CN=" & GROUPNAME)  

'Erzeugen eines FSO  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
'Erzeugen der Datei  
Set objFile = objFSO.CreateTextFile(FILENAME, ForAppending)

auslesen(objGroup)

Sub auslesen(Byval objGroup)

	For Each Member In objGroup.GetEx("member")  
	
	Do while true
	
	' Testen ob Member eine Group ist  
	set testIfObjIsGroup = GetObject("LDAP://" & Member)  
	if testIfObjIsGroup.groupType = 2 then 
		auslesen(testIfObjIsGroup)
	exit do
	end if
	
	Set objUser = GetObject("LDAP://" & Member)  
	objFile.WriteLine objUser.sn & ";" & objUser.givenName & ";" & objUser.mail   
	set objUser = nothing
	exit do
	
	Loop
	
Next

End Sub

objFile.Close