WSH - Kontakt mit Mailadresse anlegen
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.
Analog zum Anlegen eines Benutzers mit Postfach (siehe WSH - Benutzer mit Postfach anlegen) können Sie natürlich auch einen Kontakt im Active Directory anlegen. Solche Kontakte können ebenfalls "Mailenabled" werden, d.h. Sie verweisen auf eine Mailbox in einem anderen externen System.
AD-Felder und Exchange
Die allgemeinen Felder zu Kontakten entsprechend fast den Feldern der normalen Benutzer. Lesen Sie dazu die Seite AD LDAPFelder. für Kontakte kommen aber noch weitere Felder hinzu, denen wir unsere Aufmerksamkeit schenken sollten. Ein Kontakt fehlt zwar die SID aber dafür gibt es einige zusätzliche Einstellungen, die Sie schon in der MMC sehen können:
Zum einen findet sich auf der Karteikarte "Exchange - Allgemein" die Mailadresse des Kontakts. Dies muss nicht zwingend eine SMTP-Adresse sein. Zudem können hier weitere Optionen angegeben werden.
Aber auch auf der Karteikarte "Exchange - Erweitert", welche Sie erst in der erweiterten Ansicht der MMC sehen, gibt es eine sehr wichtige Einstellung. Die Steuerung des "MAPI-RTF-Formats" legt fest, ob Exchange an den Kontakt die Mails mit der "WINMAIL.DAT"-Anlage versendet oder die Mail doch als SMTP-Mail (Text oder HTML) versendet.
Diese Felder spiegeln sich auch im AD wieder:
Im Active Directory sind dann folgende Felder interessant:
TargetAddress |
Unicode String |
Dieses Feld enthält die eigentliche Zieladresse des Kontakts. Es
muss keine SMTP-Adresse sein, sondern es kann auch eine andere Adresse
(FAX, MS-Mail, Notes o.ä.) sein. Allerdings muss Exchange oder der Client
einen Weg können, diese Adressen zu verarbeiten und zuzustellen. Die TargetAddress hat eine kleine Besonderheit: Exchange leitet die Mail immer über den passenden SMTP-Connector nach außen, selbst wenn die Domäne bei Exchange selbst im RUS eingetragen ist oder es sogar einen lokalen Empfänger mit dieser Adresse gibt ! |
ProxyAddresses |
Unicode String (MultiValue) |
Dieses Array enthält alle weiteren Adressen, unter denen der Kontakt innerhalb der Exchange Organisation erreichbar ist. Sie können solch einen Kontakt daher durchaus als Weiterleitung einsetzen. für gewöhnlich werden diese Adressen aber nicht genutzt.. |
mAPIRecipient |
Boolean |
Steuert, ob der Empfänger Outlook/Exchange einsetzt und weist Exchange damit an, die Mails mit einer WINMAIL.DAT-Anlage als RTF-Nachricht zu versenden |
MailNickName |
Unicode String |
Enthält den Alias des Kontakts. Meist bildet der RUS anhand dieses Alias und der Empfängerrichtlinien die weiteren Mailadressen. |
internetEncoding |
integer |
0000000111111111111100010 = 00262114 = Default Einstellungen
verwenden 0000101100000000000000000 = 01441792 = Mime unformatiert + HTML
0000011100000000000000000 = 00917504 = Mime HTML |
Auch für das Anlegen eines Kontakts gilt, dass Sie weitere Exchange Eigenschaften setzen müssen bzw. der RUS einen Teil davon setzt. Details zu den Hintergründen finden Sie auf Hintergrund: Neuer Benutzer anlegen.
Kontakt per ADSI-Anlegen
Das Anlegen eines Exchange-Kontakts per ADSI/LDAP unterscheidet sich was nicht von dem Anlegen eines normalen Kontakts. Es müssen nur die Felder "MailNickName" und "TargetAddress" zusätzlich mit Informationen befüllt werden. Den Rest übernimmt der RUS.
Set ou = GetObject("LDAP://OU=test,DC=msxfaq,DC=net")
Set contact = ou.Create("User", "cn=kontakt1")
contact.Put "samAccountName", "kontakt1"
contact.givenName = "Kontakt"
contact.sn = "Test1"
contact.displayName = "Kontakt1"
contact.targetAddress = "kontakt1@example.com"
contact.MailNickName = kontakt1
contact.SetInfo
wscript.echo "Finished!"
Die Werte für "mAPIRecipient" und "internetEncoding" sind in der Standardeinstellung für die meisten Konfigurationen passend. Nur wenn Sie sicher sind, dass die von ihnen importierten Kontakte wirklich mit RTF-Nachrichten umgehen sollen (also MS-Mail, Outlook, Outlook Express oder Exchange verwenden), dann können Sie "mAPIRecipients = true" setzen, damit auch Einladungen und andere Formate sauber übertragen werden.
Skript 3: Import per LDIFDE
Zuletzt können Sie einen Benutzer noch mit LDIFDE anlegen lassen. Hier eine Beispieldatei mit einigen Feldern mehr als unbedingt erforderlich wären. Die Felder habe ich zur besseren Übersicht farbig gemacht. Achten Sie auf Zeilenumbrüche: Das Feld muss immer am Anfang stehen und je Zeile darf nur ein Feld sein.
dn: CN=kontakt1,CN=Users,DC=msxfaq,DC=local
changetype: add
objectClass: contact
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=msxfaq,DC=local
name: kontakt1
sn: kontakt1
givenName: Givenname
homePhone: +49(0)5251 304 600
streetAddress: Am Hoppenhof 32
postalCode: 33104
l: Paderborn
description: Net at Work GmbH
displayName: Testkontakt
mailNickname:kontakt1
TargetAddress: SMTP:kontakt1@example.com
Der Import dieser Datei legt mit als Benutzer an mit einem Postfach auf SRV01 an.
Weitere Programme und Skripte
Einige Leser der MSXFAQ haben ihre Codes mir zur
Verfügung gestellt.
Viel Spaß beim Analysieren und Anpassen.
olcontact2ad.pl (Quelle unbekannt)
PERL um auslesen der Kontakte aus einem Outlook Kontaktordner und Import Als
Kontakte im Active Directory. Sehr schönes Beispiel für den Zugriff aus Perl
auf MAPI und LDAP
Weitere Links
- VBS:AddContact
- Exchange RUS und Empfängerrichtlinien
- WSH - Benutzer mit Postfach anlegen
- ADSI und LDAP
- 275636 Creating Mail- and Mailbox-Enabled Objects in Active Directory
- MSDN Creating a Mail-Enabled Recipient
http://msdn.Microsoft.com/library/default.asp?URL=/library/en-us/wss/wss/_mgmt_management_tasks_using_adsi.asp?frame=true - Automating Exchange 2000 Management with Windows Script Host
http://www.Microsoft.com/technet/prodtechnol/exchange/2000/
maintain/ex2kwsh.mspx - User per Script anlegen
http://www.joeware.net/win/free/tools/exchmbx.htm