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.
-
'*****************************
-
' AD-Mailadressen_suchen.vbs
-
' Beschreibung
-
'
-
' Version: 1.1a
-
' Datum: 27.04.2005/23.8.2005
-
' Autor: Nils Kaczenski (Vorname at Nachname .de)
-
' Letzte Änderungen:
-
'
-
' Nils Kaczenski stellt dieses Skript ohne jede
-
' Gewährleistung zur Verfügung.
-
' Die Verwendung geschieht auf eigene Gefahr.
-
'
-
'*****************************
-
-
Option Explicit
-
Dim strSuchstring '
-
Dim strMail '
-
Dim arrMember '
-
Dim arrObjectClass '
-
Dim arrProxyAddresses '
-
Dim i '
-
Dim objConn '
-
Dim objExplorer '
-
Dim objRSAD '
-
Dim objRSlokal '
-
Dim strAusgabe '
-
Dim strConn '
-
Dim strMember '
-
Dim strObjectClass '
-
Dim strSQL '
-
Dim objRoot
-
Dim strDomain
-
-
Set objConn = CreateObject("ADODB.Connection")
-
Set objRSlokal = CreateObject("ADODB.Recordset")
-
-
strSuchstring = InputBox("Wonach wird in der Mailadresse gesucht?", _
-
"Mailadresse suchen")
-
-
-
' Domänenzugriff …
-
set objRoot = GetObject("LDAP://rootDSE")
-
strDomain = objRoot.Get("DefaultNamingContext")
-
-
' Datenbankzugriff …
-
strConn = "Provider=ADsDSOObject;"
-
objConn.Open strConn
-
-
' Zugriff auf die gesamte Tabelle
-
strSQL = "SELECT name,mailNickname,mail,proxyAddresses,member,objectClass " _
-
& "FROM 'LDAP://" & strDomain & "' WHERE proxyAddresses='*" _
-
& strSuchstring & "*'"
-
Set objRSAD = objConn.Execute(strSQL)
-
-
' lokales Recordset zur Anzeige definieren
-
objRSlokal.Fields.Append "Mailadresse", 202, 255
-
objRSlokal.Fields.Append "Name", 202, 255
-
objRSlokal.Fields.Append "Alias", 202, 255
-
objRSlokal.Fields.Append "Typ", 202, 255
-
objRSlokal.Fields.Append "Mitglieder", 202, 16384
-
-
objRSlokal.Open
-
-
Do Until objRSAD.EOF
-
arrProxyAddresses = objRSAD("proxyAddresses")
-
strMail = objRSAD("mail")
-
If Not IsNull(objRSAD("member")) Then
-
arrMember = objRSAD("member")
-
strMember = Join(arrMember, "<br>")
-
Else
-
strMember = ""
-
End If
-
arrObjectClass = objRSAD("objectClass")
-
strObjectClass = arrObjectClass(UBound(arrObjectClass))
-
For i=0 To UBound(arrProxyAddresses)
-
If (InStr(LCase(arrProxyAddresses(i)), LCase(strSuchstring)) <> 0 _
-
AND LCase(Left(arrProxyAddresses(i),5)) = "smtp:") Then
-
' Neuen Datensatz lokal einfügen
-
objRSlokal.AddNew
-
objRSlokal("Name") = objRSAD("name")
-
objRSlokal("Alias") = objRSAD("mailNickname")
-
objRSlokal("Typ") = strObjectClass
-
objRSlokal("Mailadresse") = Mid(arrProxyAddresses(i),6)
-
objRSlokal("Mitglieder") = strMember
-
objRSlokal.Update
-
End If
-
Next
-
objRSAD.MoveNext
-
Loop
-
-
If Not objRSlokal.EOF Then
-
objRSlokal.Sort="Mailadresse"
-
objRSlokal.MoveFirst
-
strAusgabe = objRSlokal.GetString(2, -1, "</TD><TD>", "</TD></TR>" _
-
& vbCrLf & "<TR><TD>", " ")
-
strAusgabe = "<HTML><BODY style=""font-family:sans-serif;"">" _
-
& "<H1>Mailadressen mit dem Inhalt " & strSuchstring & "</H1>" _
-
& "<TABLE border=""1""><TR><TD>" _
-
& strAusgabe & "</TD></TR></TABLE></BODY></HTML>"
-
Else
-
strAusgabe = "<HTML><BODY style=""font-family:sans-serif;"">" _
-
& "<p>Die Suche nach Mailadressen mit dem Inhalt " _
-
& strSuchstring & " hatte kein Ergebnis.</p>" _
-
& "</BODY></HTML>"
-
End If
-
-
Set objExplorer = CreateObject("InternetExplorer.Application")
-
objExplorer.Navigate "about:blank"
-
objExplorer.ToolBar = 0
-
objExplorer.StatusBar = 0
-
objExplorer.Width=500
-
objExplorer.Height = 400
-
objExplorer.Left = 0
-
objExplorer.Top = 0
-
objExplorer.Visible = 1
-
objExplorer.document.writeln(strAusgabe)
Verwandte Beiträge:
- 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... - 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... - 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... - 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,... - 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...
http://faq-o-matic.net/?p=671



Kategorie:
Translate EN

