|  | HowTo: | Nachträgliches Ändern des Anzeigenamens bei ADS Benutzer und Kontakten in die Form „Nachname, Vorname“ | 
Eine ziemlich nervige Grundeinstellung der Active Directory Benutzerverwaltung ist die Angewohnheit, Benutzer und Kontakte in der Form „Vorname Nachname“ zu erstellen. So ist es in der Standard-Ansicht von ADS Benutzer und Computer“ etwas mühsam, die Übersicht zu behalten, da die Benutzer alle nach Ihrem Vornamen einsortiert werden:
 
 Das gleiche gilt für die Ansicht des globalen Adressbuchs in Outlook:
 
 Noch schlimmer wäre es, wenn ein Teil der Objekte in 
      der Form „Nachname, Vorname“ und ein anderer Teil 
      mit „Vorname Nachname“ angezeigt würde...
      
      Hier lässt sich Abhilfe schaffen. Bei Neuerstellungen 
      können Sie dafür sorgen, dass die Objekt- und Anzeigenamen 
      sofort in der gewünschten Form „Nachname, Vorname“ 
      erstellt werden. Mehr dazu finden Sie hier.
      
      Für bestehende Objekte kann man eine Änderung per 
      VBScript durchführen. Das erforderliche Skript müsste 
      folgendes leisten:
      
      1. Suche alle User und Kontakte unterhalb eines angegebenen 
      Domänen- oder OU-Pfades.
      2. Von diesen Usern diejenigen nehmen, die sowohl Vor- als 
      auch Nachnamen als Eigenschaft besitzen.
      3. Der neue Name wird dann aus „Nachname, Vorname“ 
      gebildet.
      4. Der DisplayName des Objekts wird neu gesetzt.
      5. Das Objekt wird entsprechend umbenannt (das funktioniert 
      in VBScript mit der Container-Funktion
          MoveHere).
      
      Und so könnte ein entsprechendes Skript aussehen:
strFilter = "(&(|(objectclass=user)(objectclass=contact))(&(sn=*)(givenName=*)));"
strAttrs = "ADSPath;"
strScope = "Subtree"
set con = CreateObject("ADODB.Connection")
con.Provider = "ADsDSOObject"
con.Open
set list = con.Execute(strBase & strFilter & strAttrs & strScope)
While Not list.Eof
set obj = GetObject(list.Fields(0).Value)
strLast = obj.sn
strFirst = obj.givenName
strFullname = strLast & ", " & strFirst
strObjDN = obj.distinguishedName
strContainer = right(strObjDN, len(strObjDN) - len(obj.name) - 1)
strNewObjDN = Replace("cn=" & strFullName, ",", "\,")
obj.Put "displayName" , strFullName
obj.Setinfo
set container = GetObject("LDAP://" & strContainer)
container.MoveHere "LDAP://" & strObjDN, strNewObjDN
list.MoveNext
Wend
Mehr Informationen über die hier angewendete Filter-Suche im Active Directory finden sie im SelfADSI-Tutorial.
Ich habe ein etwas komplexeres Skript geschrieben, dass den 
      ADS-Container als Parameter ausliest und die entsprechenden 
      Informationen ausgibt. Der Aufruf lautet:
      
      cscript ADSDisplayName.vbs <ADS-Container-Pfad>
      
      Hierbei ist der ADS-Container die Domäne oder OU, in 
      der die Namen geändert werden sollen. Es muss eine LDAP-Pfadangabe 
      erfolgen, z.B. "dc=firma,dc=de" oder "ou=marketing,dc=firma,dc=de".
|  | Download von ADSDisplayName.vbs | 

