Nachdem in einer Domaine die User einmal angelegt sind, wäre es manuell sehr aufwendig den DisplayNamen und CanonicalName zu ändern. Dies ist jedoch manchmal notwendig, wenn zum Beispiel die User mit Nachname, Vorname angelegt wurden und nun entweder das Komma entfernt werden soll oder die Namen in der Reihenfolge vertauscht werden müssen.

    Damit man die nicht händisch mache muss, hab ich ein vbs-file erstellt, dass dies automatisch macht. Der Aufbau ist relativ einfach gehalten. in der 3. Zeile wird der Pfad zu den umzubenennenden Usern eingetragen. Das Script durchläuft dann die OU und kontrolliert alle User-Objekte auf das vorkommen eines Kommas im DisplayNamen. Wenn eines vorhanden ist, wird der Name gesplittet (hier ist noch eine Unterscheidung zwischen einem User mit Vor- & Zuname, und einem User der noch einen zweiten Vornamen besitzt) das Komma entfernt und der CN auf Nachname Vorname und der DisplayName auf Vorname Nachname gesetzt.

    Des Verständnissheitshalber sind einige Counter eingebaut, damit der Admin am Ende des scriptes eine Übersicht über die Änderungen erhält.

    Am Ende des scriptes stehen noch vier ldif Befehle, mit denen man die Objekte eines ADs exportieren und wieder importieren kann. Evtl. möchte man ja einmal alle Benutzerobjekte in einer Testdomain bearbeiten um zu sehen wie das Ergebniss aussieht.

    Auzurufen ist das über cscript rename_ad_user.vbs

    Einige Userobjekte lassen sich evt. nicht direkt beim ersten mal ändern. Wie im Screenshot zu sehen ist, konnten 3 User nicht verändert werden. Einfach das script nochmal starten, dann werden die fehlenden noch nachgezogen.

    on error resume next
    str_ParentDN = "OU=test,DC=nwtraders,DC=msft"
    Set oTargetOU = GetObject("LDAP://" & str_ParentDN)
    oTargetOU.Filter = Array("user")
    str_errcount = 0
    str_errcount = 0
    str_obj_count = 0
    str_edit_count = 0
    For each usr in oTargetOU
     if instr(usr.SamAccountName, "$") = 0 then
      if instr(usr.displayName, ",") <> 0 then
       str_FullName = usr.get("displayName")
       str_FullName = Replace(str_FullName,",","")
       ary_FullName = split(str_FullName)
       str_CN = usr.get("cn")
       CountWords = UBound(ary_FullName) - LBound(ary_FullName) +1
       if CountWords = 2 then
        str_Last = ary_FullName(0)
        str_First = ary_FullName(1)
        str_FullName =  str_First + " " + str_Last
        str_Fullname_CN= str_Last + " " + str_First
       end if
       if CountWords = 3 then
        str_First = ary_FullName(1)
        str_Middle = ary_FullName(2)
        str_Last = ary_FullName(0)
        str_Fullname = str_First + " " + str_Middle + " " + str_Last
        str_Fullname_CN= str_Last + " " + str_First + " " + str_Middle
       end if
      usr.put "displayName", str_FullName
      usr.setinfo
    '    wscript.echo "LDAP://cn=" & """" & str_CN & """" & "," & str_ParentDN, "cn=" & """" & str_FullName_CN & """"
      oTargetOU.MoveHere "LDAP://cn=" & """" & str_CN & """" & "," & str_ParentDN, "cn=" & """" & str_FullName_CN & """"
      str_edit_count = str_edit_count + 1
      usr.setinfo
      end if
     end if
    ' wscript.sleep 250
     str_obj_count = str_obj_count + 1
     if err.number <> 0 then
      wscript.echo "Bei der Bearbeitung folgendes Eintrages trat ein Fehler auf: "  & str_CN
      str_errcount = str_errcount + 1
      Err.Clear
     end if
    Next
    wscript.echo "Skript beendet." & chr(13) & "Es wurden " & str_obj_count & " Objekte kontrolliert und " & str_edit_count & " bearbeitet. Dabei traten " & str_errcount & " Fehler auf."
    'Export der OUs
    'ldifde -f exportOu.ldf -s server -d "DC=nwtraders,DC=msft" -p subtree -r "(objectCategory=organizationalUnit)" -l "cn,objectclass,ou"
    ' Export der User
    'ldifde -f Exportuser.ldf -s server -d "DC=nwtraders,DC=msft" -p subtree-r "(&(objectCategory=person)(objectClass=User)(givenname=*))" -l "cn,givenNamesn,DisplayName,objectclass,samAccountName"
    'Import der OUs
    'ldifde -i -f ExportOU.ldf -s server
    'Import der User
    'ldifde -i -f Exportuser.ldf -s server

    Leave A Reply