WSH - Benutzer mit Postfach 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.

Achtung: Dieses Skript bitte NICHT mit Exchange 2007/2010 einsetzen, da nicht alle Properties gesetzt werden. Hierzu ist die PowerShell vorzuziehen.

Das Anlegen von Benutzern mit Exchange Postfach ist eine der häufigen Programmieranfragen an mich. Zum einen geht es darum, viele Benutzer massenhaft anzulegen oder aus anderen Datenquellen die Informationen zu füllen. Auf der andere Seite gibt es immer mehr Leute, die über eine ASP-Seite (Webserver) das Management abwickeln.

Hier sind drei Beispiele. Details zu den Hintergründen finden Sie auf Hintergrund: Neuer Benutzer anlegen.

Skript 1: ADSI und CDOEXM

Dieses Skript legt einen Benutzer im Active Directory per ADSI an und aktiviert diesen als Exchange 2000 Postfach per CDOEXM in der Firma "CompanyA" in der Speichergruppe SG A und dem Mailboxstore CompanyA.com.

' Source: Microsoft Webseite: Exchange 2000 ASP Guide
org="CompanyA.com"
SG="CompanyA.com,CN=SG A"

' bind to container, create User and set some (basic) settings
Set ou = GetObject("LDAP://OU=" + org + ", DC=MYNET, DC=COM")
Set usr = ou.Create("User", "cn=JSmith")
usr.Put "samAccountName", "jsmith"
usr.givenName = "John"
usr.sn = "Smith"
usr.displayName = "John Smith"
usr.UserPrincipalName = jsmith@CompanyA.com
usr.mail = JSmith@CompanyA.com
usr.SetInfo


'use CDOEXM to create mailbox, this is not possible with ADSI
'when using this script take care of the correct names !
Set objMailbox = usr
objMailbox.CreateMailbox ("LDAP://MyNet-BE/CN=" + SG + ",CN=Infor_
mationStore,CN=MyNet-BE,CN=Servers,CN=First Administrative Group,_
CN=Administrative Groups,CN=MyNet ASP,CN=Microsoft Exchange,CN=Se_
rvices,CN=Configuration,DC=MyNet,DC=com")
'use IMailboxStore interface from CDOEXM to set Store Limits
objMailbox.EnableStoreDefaults = FALSE
objMailbox.StoreQuota = 10000
objMailbox.OverQuotaLimit = 12000
objMailbox.HardLimit = 15000

' set password and enable account
usr.setPassword "password"
usr.AccountDisabled = False
usr.SetInfo
wscript.echo "Finished!"

Bei diesem Skript ist zu beachten, dass Sie keine Mailboxrechte setzen können, wenn Sie nicht mindestens Exchange 2000 SP2 installiert haben. Erst dann erlaubt das ObjMailbox diese Eigenschaften. (Daher werden Sie hier nicht genutzt).

Skript 2: ADSI-Only

Wenn Sie auf dem PC keine Exchange Administrator Werkzeuge installiert haben, dann können Sie die Methode "obj-Mailbox.CreateMailbox" nicht aufrufen. Sie könnten aber nun auf den Gedanken kommen, einfach nur den Benutzer anzulegen und die restlichen Felder zu füllen. Die Pflichtfelder, damit der RUS einen Benutzer aktiviert sind:

  • mailNickname'
    Dies ist der ALIAS der Mailbox. Er sollte eindeutig in ihrer Organisation sein.
  • displayName
    Dies ist der Name, der später im Adressbuch angezeigt wird. Siehe auch Code RDNChance

Zusätzlich ist mindestens eines der folgenden Atribute zu setzen:

  • homeMTA
    Distinguished Name des zuständigen MTA für diese Mailbox
  • homeMDB
    Distinguished Name des Informationsspeichers
  • msExchHomeServerName
    Name des Exchange Stammservers

Anhand einer dieser Angaben erstellt der RUS die weiteren Informationen. Natürlich können Sie auch mehr Informationen vorgeben. Hierbei müssen Sie aber die richtige Exchange Version haben. Bei dieser Form der Postfachgenerierung erhält der Benutzer nicht das Recht auf seine Mailbox. Sie müssen programmatisch den Account "SELF" die "Read" und "Full Mailbox Access"-Rechte geben. Dies können Sie aber wieder rum nur mit den aktualisierten Objekten seit Exchange 2000 SP2. Allerdings hat Microsoft auch hier eine Lösung in Form des Exchange 2000 September 2003 Rollup Fix geschafften. Exchange prüft ab dieser Version auch die Mailboxrechte und korrigiert diese bei der Neuanlage eines Benutzers, sofern erforderlich.

Skript 3: Import per LDIFDE

Zuletzt können Sie einen Benutzer noch mit LDIFDE anlegen lassen. Auch hier können Sie nicht "SELF" das Recht auf die Mailbox geben. Insofern funktioniert dieser Weg nur, wenn der Store des Postfachs mindestens Exchange 2000 SP3 + StoreFix Sep 2003 nutzt oder Sie über andere Skripte die Rechte anpassen. 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=fcarius,CN=Users,DC=msxfaq,DC=local
changetype: add
objectClass: User
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=msxfaq,DC=local
name: fcarius
sAMAccountName: fcarius
profilePath: \\msxfaq.de\profile\fcarius\profil.w2k
scriptPath: allUsers.cmd
sn: Carius
givenName: Frank
homePhone: +49(0)5251 304 600
streetAddress: Am Hoppenhof 32
postalCode: 33104
l: Paderborn
description: Net at Work GmbH
displayName: Frank Carius
distinguishedName: CN=fcarius,CN=Users,DC=msxfaq,DC=local
UserPrincipalName: fcarius@msxfaq.de.nospam
mailNickname:fcarius
homeMDB: CN=Postfachspeicher (SRV01),CN=Erste Speichergruppe,CN=InformationStore,CN=SRV01,CN=Servers,CN=Erste administrative Gruppe,CN=Administrative Groups,CN=Msxfaq,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=msxfaq,DC=local
legacyExchangeDN:
/o=Msxfaq/ou=Erste administrative Gruppe/cn=Recipients/cn=fcarius

Der Import dieser Datei legt mit als Benutzer an mit einem Postfach auf SRV01 an. Bitte beachten Sie, dass der RUS aber auch die aktuelle STORE.EXE mitspielen müssen.

  • Q313819  HOW TO: Create Mailbox-Enabled Accounts using LDIFDE in Exchange 2000 Server
  • 275636 Creating Exchange mailbox-enabled and mail-enabled objects in Active Directory

Andere Skripte

Auch Leser der MSXFAQ sind natürlich fleißig am programmieren und stellen mir manchmal ihre Skripte zur Verfügung.

User.vbs (Quelle: Andreas Schoon)
Anlegen vieler Benutzer aus einer Textdatei per VBScript und einer "Willkommensmail" im Postfach.

Weitere Links: