Logo faq-o-matic.net
Logo faq-o-matic.net

Alle Mailadressen anzeigen

von veröffentlicht am27. April 2005, 14:41 Uhr Kurzlink http://faq-o-matic.net/?p=670 Zitatlink
Kategorie Kategorie: AD: Erweiterte Abfragen, Exchange   Translate with Microsoft Translator Translate EN
Zuletzt aktualisiert: 8. September 2008

Die Mailadressen einer Exchange-Organisation sind im Active Directory gespeichert. Für den Zugriff auf die Hauptadresse eines Benutzers gibt es ein einfach auszuwertendes Feld im AD: "mail" bzw. "E-Mail-Adresse". Nur: Viele Objekte haben mehr als eine Adresse – diese stehen dann im Feld "proxyAddresses" bzw. "E-Mail-Adresse (andere)". Da dieses Feld mehrwertig (multi-valued) ist, kann es über die AD-Verwaltungskonsole leider nicht ohne weiteres durchsucht werden. Noch dazu gibt es zahlreiche weitere Objektklassen, die Mailadressen haben können.

Mit Hilfe eines VB-Skripts lassen sich alle Mailadressen ausgeben, die im AD bekannt sind. Es fragt alle Objekte ab, die einen Exchange-Alias haben und liest von diesen die "proxyAddresses" aus. Diese wiederum stellt es in einer Tabelle übersichtlich dar – momentan geordnet nach der Mailadresse; in einer späteren Version wird man die Sortierung ändern können.

Dies ist die korrigierte Fassung: Sie funktioniert ab sofort in jeder Domäne, nicht nur bei mir in der Firma. ,-) Voraussetzung ist, dass der aufrufende Rechner Domänenmitglied ist.

Achtung: Das Skript ist u.U. für sehr große Datenbestände nicht geeignet, weil es den Internet Explorer zur Ausgabe nutzt. In solchen Fällen können die Daten z.B. in eine Datei ausgegeben werden.

Wer gezielt nach einer bestimmten Adresse sucht, kann diesen Artikel nutzen.

Einen ähnlichen Ansatz in anderer Ausprägung beschreibt Frank Carius hier.

  1. '*******************************
  2. ' AD-Mailadressen_anzeigen.vbs
  3. ' Beschreibung
  4. '
  5. ' Version: 1.1a
  6. ' Datum: 21.04.2005/23.08.2005
  7. ' Autor: Nils Kaczenski (Vorname at Nachname .de)
  8. ' Letzte Änderungen:
  9. '
  10. ' Nils Kaczenski stellt dieses Skript ohne jede
  11. ' Gewährleistung zur Verfügung.
  12. ' Die Verwendung geschieht auf eigene Gefahr.
  13. '
  14. '********************************
  15. Option Explicit
  16. Dim strMail '
  17. Dim arrMember '
  18. Dim arrObjectClass '
  19. Dim arrProxyAddresses '
  20. Dim i '
  21. Dim objConn '
  22. Dim objExplorer '
  23. Dim objRSAD '
  24. Dim objRSlokal '
  25. Dim strAusgabe '
  26. Dim strConn '
  27. Dim strMember '
  28. Dim strObjectClass '
  29. Dim strSQL '
  30. Dim objRoot
  31. Dim strDomain
  32.  
  33.  
  34. Set objConn = CreateObject("ADODB.Connection")
  35. Set objRSlokal = CreateObject("ADODB.Recordset")
  36.  
  37. ' Domänenzugriff …
  38. set objRoot = GetObject("LDAP://rootDSE")
  39. strDomain = objRoot.Get("DefaultNamingContext")
  40. ' Datenbankzugriff …
  41. strConn = "Provider=ADsDSOObject;"
  42. objConn.Open strConn
  43. ' Zugriff auf die gesamte Tabelle
  44. strSQL = "SELECT name,mailNickname,mail,proxyAddresses,member,objectClass " _
  45. & "FROM 'LDAP://" & strDomain & "' WHERE mailNickname='*'"
  46. Set objRSAD = objConn.Execute(strSQL)
  47.  
  48. ' lokales Recordset zur Anzeige definieren
  49. objRSlokal.Fields.Append "Mailadresse", 202, 255
  50. objRSlokal.Fields.Append "Name", 202, 255
  51. objRSlokal.Fields.Append "Alias", 202, 255
  52. objRSlokal.Fields.Append "Typ", 202, 255
  53. objRSlokal.Fields.Append "Mitglieder", 202, 16384
  54. objRSlokal.Open
  55. Do Until objRSAD.EOF
  56. arrProxyAddresses = objRSAD("proxyAddresses")
  57. strMail = objRSAD("mail")
  58. If Not IsNull(objRSAD("member")) Then
  59. arrMember = objRSAD("member")
  60. strMember = Join(arrMember, "<br>")
  61. Else
  62. strMember = ""
  63. End If
  64. arrObjectClass = objRSAD("objectClass")
  65. strObjectClass = arrObjectClass(UBound(arrObjectClass))
  66. For i=0 To UBound(arrProxyAddresses)
  67. If LCase(Left(arrProxyAddresses(i),5)) = "smtp:" Then
  68. ' Neuen Datensatz lokal einfügen
  69. objRSlokal.AddNew
  70. objRSlokal("Name") = objRSAD("name")
  71. objRSlokal("Alias") = objRSAD("mailNickname")
  72. objRSlokal("Typ") = strObjectClass
  73. objRSlokal("Mailadresse") = Mid(arrProxyAddresses(i),6)
  74. objRSlokal("Mitglieder") = strMember
  75. objRSlokal.Update
  76. End If
  77. Next
  78. objRSAD.MoveNext
  79. Loop
  80. objRSlokal.Sort="Mailadresse"
  81. objRSlokal.MoveFirst
  82. strAusgabe = objRSlokal.GetString(2, -1, "</TD><TD>", "</TD></TR>" _
  83. & vbCrLf & "<TR><TD>", " ")
  84. strAusgabe = "<HTML><BODY style=""font-family:sans-serif;"">" _
  85. & "<TABLE border=""1""><TR><TD>" _
  86. & strAusgabe & "</TD></TR></TABLE></BODY></HTML>"
  87.  
  88. Set objExplorer = CreateObject("InternetExplorer.Application")
  89. objExplorer.Navigate "about:blank"
  90. objExplorer.ToolBar = 0
  91. objExplorer.StatusBar = 0
  92. objExplorer.Width=500
  93. objExplorer.Height = 400
  94. objExplorer.Left = 0
  95. objExplorer.Top = 0
  96. objExplorer.Visible = 1
  97. objExplorer.document.writeln(strAusgabe)

Verwandte Beiträge:

  1. Mailadresse gezielt suchen
    Um gezielt nach einer bestimmten Mailadresse im AD zu suchen, eignet sich das folgende Skript. Es fragt nach einem Fragment,...
  2. Homepage für Öffentliche Ordner in Outlook 2010 anzeigen
    Wer unter Outlook 2010 HTML-Seiten in Öffentlichen Ordnern anzeigen lassen will, steht vor dem Problem, dass die Schaltfläche zwar vorhanden,...
  3. Exchange 2010: IMAP-Größenlimit hochsetzen
    Bei der Migration von einem IMAP-basierten Mailsystem nach Exchange 2010 tut sich eine unerwartete Hürde auf: Für IMAP gelten nämlich...
  4. Den LDAP-Pfad eines AD-Objekts anzeigen
    Im Verwaltungsprogramm "Active Directory-Benutzer und -Computer" (ADUC) gibt es keine Möglichkeit, den LDAP-Pfad zu vorhandenen Objekten anzuzeigen. In vielen Fällen...
  5. Öffentliche und private Kalender in Outlook 2007 anzeigen
    Wir haben auf einem Exchange Server 2007 für unsere Mitarbeiter mehrere öffentliche Kalender liegen. Diese wollen die neue Kalenderansicht von...

© 2005-2012 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!