GAL-Name - Displayname

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.

Displayname mit Exchange 2000/2003

Exchange 2000/2003 nutzt das Active Directory als Adressdatenbank und zeigt dem Outlook Client im Adressbuch den "Displayname" an. Leider wird dieser Name bei der Anlage eines Benutzers per MMC immer mit "Vorname Nachname" gefüllt. Dieses Anzeigeformat ist natürlich für deutsche Verhältnisse ungewohnt, da wir lieber eine Sortierung nach dem Nachnamen hätten.

Die Exchange 2000/2003 Erweiterung von Active Directory Benutzer und Computer wertet zur Bildung des "Displaynamen" das Feld "DisplaySpecifiers" aus. Wenn Sie also einen Benutzer anlegen, erstellt die MMC schon das Feld Displayname, welcher später dann auch von Outlook als Name angezeigt wird. Der Inhalt von "DisplaySpecifiers" können Sie mittels ADSIEDIT ändern.

  • Q250455 XADM: How to Change Display Names of Active Directory Users

Sie sollten aber darauf achten, dass dadurch auch der "dn" plötzlich ein "Komma" enthalten kann. Diese Änderung wirkt sich natürlich auch nicht auf bestehende sondern nur auf neu angelegte Benutzer aus. Wenn Sie nun aber schon viele Benutzer angelegt haben oder die Veränderung des Directory Name (dn) nicht wünschen, dann bleibt ihnen der Weg über ein Skript, welches aus den ausgefüllten Feldern "Vorname" (GivenName)  und Nachname" (sn) und eventuell auch der Abteilung den Display Namen neu schreibt. Diese Variante erlaubt auch weitergehende Änderungen , z.B. neben dem Namen auch die Abteilung mit anzuhängen.

Ein ähnliches Skript, welches ich als Basis genommen habe, in der TechNet im Artikel "Q277717 How to Change the Display Names of Active Directory Users with Active Directory Services Interface Script." zu finden. Ich habe basierend darauf ein Skript für meinen Einsatzzweck umgebaut.

REM Skript zum Anpassen der Display Namen der Benutzer

wscript.echo "Aendere Anzeigenamen testou.msxfaq.de"

Set oTargetOU = GetObject("LDAP://OU=testou,DC=msxfaq,DC=de")
oTargetOU.Filter = Array("User")

For each usr in oTargetOU
  if instr(usr.SamAccountName, "$") = 0 then
    vLast = usr.get("Sn")
    vFirst = usr.get("GivenName")
    vFirma = usr.get("Company")
    vFullname = vLast + ", " + vFirst + " (" + vFirma + " )"
    usr.put "displayName", vFullName
    usr.setinfo
    wscript.echo usr.displayName
  end if
Next
wscript.echo "Skript beendet"

Um das Skript bei sich einsetzen zu können, müssen Sie folgendes sicherstellen:

  1. Sie benötigen Windows Scripting Host
    Starten Sie CSCRIPT.EXE. denn das Programm gefunden wird, ist WSH installiert)
  2. OU anpassen
    Sie müssen den roten Teil anpassen und ihre OU eintragen. Wenn Sie mehrere OUs haben, dann sollten sie das Skript einfach mehrfach aufrufen oder gleich das Beispiel von Microsoft auf ihre Bedürfnisse zuschneiden
  3. Bildungsregel anpassen
    Wenn ihnen "Nachname, Vorname (Firma)" nicht passt, dann sollten Sie auch den blauen Teil anpassen.
  4. Rechte
    Sie benötigen die Rechte, in der OU die entsprechenden Felder zu ändern
  5. TESTEN
    Si sollten das Skript zuerst in einer Test-OU oder besser noch in einem Test AD ausprobieren. Ich selbst mache das immer mit einem Windows 2000 DC Server, den ich in einer VMWare dazu starte. Das spart den Extra PC und die Lauferei.

Das original Microsoft Skript gibt es unter "Q277717 How to Change the Display Names of Active Directory Users with Active Directory Services Interface Script. Auch andere Personen haben ähnliche Skripte geschrieben, z.B. http://www.rpieroth.de/ChangeRDN.VBS.

Displayname mit Exchange 2007

In Exchange 2007 kommt nicht mehr die MMC für Benutzer und Computer zum Einsatz, sondern die Exchange Management Console oder PowerShell. Hier hat Microsoft leider die Bildungsregel "fest" codiert.

The rule generating the "Name" field is fixed in code. There is no way für administrators to customize the generation of this field.
Quelle: Exchange Server 2007 internationalized console GUI layout of name and address information
http://blogs.technet.com/b/exchange/archive/2007/02/01/432722.aspx

Um also hier eine "Lösung" zu schaffen, bleibt also nur die "Korrektur" nach der Anlage des Benutzers. Da manuelle Schritte fehleranfällig und arbeitsintensiv sein können, lohnt sich hier natürlich ebenfalls ein Skript. Vielleicht sogar in Verbindung mit einer Logik, die Änderungen sehr schnell erkennt und umsetzt (siehe auch E2K7:RUS)

Ein einfaches Skript kann dies auch manuell durchführen. 

# Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

$Userliste = Get-User -resultsize unlimited
ForEach ($User in $Userliste ) {
    $DN = $User.LastName
    if ($User.FirstName.length -ge 1) {$DN = $DN  + ", " + $User.FirstName}
    $Displayname = $User.displayname
    if ($DN -ne $User.displayname) {
        "$Displayname   <> $DN"
    }
    Set-User $User -DisplayName $DN
    $DN = $Null
}

Weitere Skripte und Beispiele finden Sie z.B. auch auf folgenden Seiten:

Weitere Links