Tools: FINDSMTP

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Wie oft möchten Sie einen Benutzer anlegen und eine bestimmte Mailadresse vergeben und Exchange meldet, dass die Adresse bereits belegt ist ?. Manchmal einfach zu oft.

Natürlich kann ein versierter Administrator einfach mit LDP, LDIFDE, CSVDE oder auch der MMC für Benutzer und Computer und einer entsprechend formulierten benutzerdefinierten Abfrage die Adresse suchen und finden. Aber Fakt ist auch, dass das nun mal nicht jedermanns Sache ist. Als einfacher Anwender kann ich sogar die SMTP-Adresse einfach in Outlook eingeben und lasse Outlook den Namen auflösen.

Insofern ist das Skript hier eigentlich überflüssig aber aus dem Feedback von Lesern habe ich es dennoch etwas besser beschrieben und zum Download bereit gestellt. Vielleicht können Sie darin  Klasse ja führ eigenen Programmierübungen wiederverwenden.

Das folgende VBScript gibt genau den Objektnamen aus, welcher die als Parameter übergebene Mailadresse hat. Damit können Sie zum einen sehr schnell diese Mailadresse finden und zum anderen haben Sie eine einfache Quelle zur Weiterentwicklung in eigenen Programmen.

findsmtp.1.2.vbs.txt
Herunterladen und Erweiterung TXT entfernen

In meinen TestUmgebungen und bei Kunden hat dieses Script bislang problemlos funktioniert. Trotzdem kann es sein, dass das Script unerwartet abbricht. Dies liegt oft an Sonderzeichen oder Inhalten im AD, die ich noch nicht abgefangen habe. Bitte setzen Sie dann das Debugging auf 6 und senden Sie mir die letzten Zeilen der Protokolldatei und die Zeilennummer des Fehlers des Scripting Hosts. -> Kontakt

Aufruf

Ein Blick in den Source Code (VBScript) oder auch einfach ein Aufruf ohne Parameter offenbart, dass Sie das Skript einfach nur mit der SMTP-Adresse als Parameter aufrufen müssen. Es bietet sich daher folgende Syntax an.

cscript findsmtp.1.2.vbs User@firma.tld

Ein Aufruf in meiner TestUmgebung ergibt daher auch ein ganz einfaches Bild.

FindSMTP Aufruf

LDAP-Anfrage für MMS

Wenn Sie z.B. in der MMC oder mit LDAP oder einer Programmiersprache z.B.: alle Exchange Objekte erhalten wollen, dann ist folgender Suchstring nutzbar:

(&(&(& (mailnickname=*) (|(&(objectCategory=person)(objectClass=User)(!(homeMDB=*))
(!(msExchHomeServerName=*)))(&(objectCategory=person)
(objectClass=User)(|(homeMDB=*)(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=contact))
(objectCategory=group)(objectCategory=publicFolder) ))))

Weitere Links

  • .NET4Admin
    FindSMTP als VB.NET Kommandozeilenanwendung
  • HOWTO: Find an User in a multi-domain Active Directory environment programmatically
    http://www.infinitec.de/exchange/howtos/findUsermultiad.aspx
  • 318774 Removing duplicate and unwanted proxy addresses in Exchange
  • 253568 HOW TO: use ADSI to Access Exchange User Data from an ASP Page
  • 251390 HOWTO: Find Exchange Recipients Associated With an NT Account