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 














