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

Mailadresse gezielt suchen

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

Um gezielt nach einer bestimmten Mailadresse im AD zu suchen, eignet sich das folgende Skript. Es fragt nach einem Fragment, das in einer Adresse vorkommen soll (z.B. "support" oder "@unserefirma") und gibt alle Adressen und die zugeordneten Objekte (Benutzer, Gruppen usw.) aus, die dieses Fragment enthalten.

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.

Wer zur Übersicht alle Mailadressen ausgeben will, nutzt das Skript aus diesem Artikel.

  1. '*****************************
  2. ' AD-Mailadressen_suchen.vbs
  3. ' Beschreibung
  4. '
  5. ' Version: 1.1a
  6. ' Datum: 27.04.2005/23.8.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.  
  16. Option Explicit
  17. Dim strSuchstring '
  18. Dim strMail '
  19. Dim arrMember '
  20. Dim arrObjectClass '
  21. Dim arrProxyAddresses '
  22. Dim i '
  23. Dim objConn '
  24. Dim objExplorer '
  25. Dim objRSAD '
  26. Dim objRSlokal '
  27. Dim strAusgabe '
  28. Dim strConn '
  29. Dim strMember '
  30. Dim strObjectClass '
  31. Dim strSQL '
  32. Dim objRoot
  33. Dim strDomain
  34.  
  35. Set objConn = CreateObject("ADODB.Connection")
  36. Set objRSlokal = CreateObject("ADODB.Recordset")
  37.  
  38. strSuchstring = InputBox("Wonach wird in der Mailadresse gesucht?", _
  39. "Mailadresse suchen")
  40.  
  41.  
  42. ' Domänenzugriff …
  43. set objRoot = GetObject("LDAP://rootDSE")
  44. strDomain = objRoot.Get("DefaultNamingContext")
  45.  
  46. ' Datenbankzugriff …
  47. strConn = "Provider=ADsDSOObject;"
  48. objConn.Open strConn
  49.  
  50. ' Zugriff auf die gesamte Tabelle
  51. strSQL = "SELECT name,mailNickname,mail,proxyAddresses,member,objectClass " _
  52. & "FROM 'LDAP://" & strDomain & "' WHERE proxyAddresses='*" _
  53. & strSuchstring & "*'"
  54. Set objRSAD = objConn.Execute(strSQL)
  55.  
  56. ' lokales Recordset zur Anzeige definieren
  57. objRSlokal.Fields.Append "Mailadresse", 202, 255
  58. objRSlokal.Fields.Append "Name", 202, 255
  59. objRSlokal.Fields.Append "Alias", 202, 255
  60. objRSlokal.Fields.Append "Typ", 202, 255
  61. objRSlokal.Fields.Append "Mitglieder", 202, 16384
  62.  
  63. objRSlokal.Open
  64.  
  65. Do Until objRSAD.EOF
  66. arrProxyAddresses = objRSAD("proxyAddresses")
  67. strMail = objRSAD("mail")
  68. If Not IsNull(objRSAD("member")) Then
  69. arrMember = objRSAD("member")
  70. strMember = Join(arrMember, "<br>")
  71. Else
  72. strMember = ""
  73. End If
  74. arrObjectClass = objRSAD("objectClass")
  75. strObjectClass = arrObjectClass(UBound(arrObjectClass))
  76. For i=0 To UBound(arrProxyAddresses)
  77. If (InStr(LCase(arrProxyAddresses(i)), LCase(strSuchstring)) <> 0 _
  78. AND LCase(Left(arrProxyAddresses(i),5)) = "smtp:") Then
  79. ' Neuen Datensatz lokal einfügen
  80. objRSlokal.AddNew
  81. objRSlokal("Name") = objRSAD("name")
  82. objRSlokal("Alias") = objRSAD("mailNickname")
  83. objRSlokal("Typ") = strObjectClass
  84. objRSlokal("Mailadresse") = Mid(arrProxyAddresses(i),6)
  85. objRSlokal("Mitglieder") = strMember
  86. objRSlokal.Update
  87. End If
  88. Next
  89. objRSAD.MoveNext
  90. Loop
  91.  
  92. If Not objRSlokal.EOF Then
  93. objRSlokal.Sort="Mailadresse"
  94. objRSlokal.MoveFirst
  95. strAusgabe = objRSlokal.GetString(2, -1, "</TD><TD>", "</TD></TR>" _
  96.  & vbCrLf & "<TR><TD>", " ")
  97. strAusgabe = "<HTML><BODY style=""font-family:sans-serif;"">" _
  98. & "<H1>Mailadressen mit dem Inhalt " & strSuchstring & "</H1>" _
  99. & "<TABLE border=""1""><TR><TD>" _
  100. & strAusgabe & "</TD></TR></TABLE></BODY></HTML>"
  101. Else
  102. strAusgabe = "<HTML><BODY style=""font-family:sans-serif;"">" _
  103. & "<p>Die Suche nach Mailadressen mit dem Inhalt " _
  104. & strSuchstring & " hatte kein Ergebnis.</p>" _
  105. & "</BODY></HTML>"
  106. End If
  107.  
  108. Set objExplorer = CreateObject("InternetExplorer.Application")
  109. objExplorer.Navigate "about:blank"
  110. objExplorer.ToolBar = 0
  111. objExplorer.StatusBar = 0
  112. objExplorer.Width=500
  113. objExplorer.Height = 400
  114. objExplorer.Left = 0
  115. objExplorer.Top = 0
  116. objExplorer.Visible = 1
  117. objExplorer.document.writeln(strAusgabe)

Verwandte Beiträge:

  1. Alle Mailadressen anzeigen
    Die Mailadressen einer Exchange-Organisation sind im Active Directory gespeichert. Für den Zugriff auf die Hauptadresse eines Benutzers gibt es ein...
  2. Wie frage ich gezielt Benutzerobjekte ab?
    Der LDAP-Standard sieht unglücklicherweise vor, dass die Objektklasse "user" nicht nur Benutzerobjekte umfasst (wie man annehmen könnte). Setzt man also...
  3. Unter Windows 7 Active-Directory-Benutzerkonten suchen
    Mit jeder Windows-Version wurde die Suche aufpoliert, das gilt auch für Windows 7. Dennoch gilt es Dinge, die man so...
  4. Ein AD-Attribut zu einem Logon-Namen herausfinden
    Das folgende Skript gibt den Wert eines beliebigen Attributs aus dem Active Directory für einen User zurück, dessen Logon-Name (SAM-Name,...
  5. 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...

© 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!