Option explicit On Error Resume Next dim objOU, str_nachname, str_vorname, str_displayname, str_rdn, obj, Update Sub usage() Dim Nachricht Nachricht = "!------------------------------------------------------------------!" & vbCrLf Nachricht = Nachricht & "! Skript zum Korrigieren der Active Directory Namen !" & vbCrLf Nachricht = Nachricht & "! Stand: 05. Oktober 2003 !" & vbCrLf Nachricht = Nachricht & "! Autor: frank.carius@netatwork.de !" & vbCrLf Nachricht = Nachricht & "! !" & vbCrLf Nachricht = Nachricht & "! Vorname und Nachname gefuellt -> Displayname !" & vbCrLf Nachricht = Nachricht & "! Sonst Generierung des Vorname/Nachname anhand des Displayname !" & vbCrLf Nachricht = Nachricht & "! 'vorname nachname' oder ' nachname, vorname' !" & vbCrLf Nachricht = Nachricht & "! RDN aus Displayname ableiten !" & vbCrLf Nachricht = Nachricht & "! Objekt umbennenen !" & vbCrLf Nachricht = Nachricht & "! !" & vbCrLf Nachricht = Nachricht & "! Aufruf: rdnchance.vbs LDAPPfad der OU !" & vbCrLf Nachricht = Nachricht & "! Beispiel: rdnchance.vbs OU=TestOU,DC=Entwicklung,DC=net !" & vbCrLf Nachricht = Nachricht & "! Nicht erlaubte Sonderzeichen: sind Backslash und Komma !" & vbCrLf Nachricht = Nachricht & "!------------------------------------------------------------------!" & vbCrLf wscript.echo Nachricht wscript.quit(0) End Sub '---- Hauptprogramm ---- If (wscript.Arguments.length = 0) Then Call usage wscript.quit(1) End If If (InStr(wscript.Arguments(0),"?") > 0) Then Call usage wscript.quit(1) End If wscript.echo "rdnchange.vbs: Gestartet:--- Ziel OU: " & wscript.Arguments(0) Set objOU = GetObject("LDAP://" & wscript.Arguments(0)) For Each obj in objOU if obj.class = "User" then update = false wscript.echo "rdnchange.vbs:Objekt ----------------- Originalwerte --------------------" wscript.echo "rdnchange.vbs:Objekt RDN =" & obj.cn str_nachname = obj.sn wscript.echo "rdnchange.vbs: Nachname =" & str_nachname str_vorname = obj.givenName wscript.echo "rdnchange.vbs: Vorname =" & str_vorname str_displayname = obj.displayname wscript.echo "rdnchange.vbs: Displayname =" & str_displayname wscript.echo "rdnchange.vbs:Objekt ----------------- NEUE Werte --------------------" if (len(str_nachname)<>0) and (len(str_vorname)<>0) then str_displayname = str_nachname & ", " & str_vorname ' Displayname anhand vor/Nachamebilden if str_displayname <> obj.displayname then wscript.echo "rdnchange.vbs: Displayname NEU1 =" & str_displayname update = true end if else if len(str_nachname)=0 then ' Vorname und Nachname aus dem Display Name ableiten if (instr(str_displayname,",")=0) then ' Komma im Displayname ? str_nachname = mid(str_displayname,instr(str_displayname," ")+1) 'kein Komma -> Rechter Teil wscript.echo "rdnchange.vbs: Nachname NEU1 =" & str_nachname update = true else ' Komma im Display Name str_nachname = left(str_displayname,instr(str_displayname,",")-1) ' Nachname = erste Teil des Displayname wscript.echo "rdnchange.vbs: Nachname NEU2 =" & str_nachname update = true end if end if if len(str_vorname)=0 then if (instr(str_displayname,",")<>0) then ' Komma im Displayname ? str_vorname = mid(str_displayname,instr(str_displayname,",")+2) ' Vorname = zweiter Teil des Displayname wscript.echo "rdnchange.vbs: Vorname NEU1 =" & str_vorname update = true else str_vorname = left(str_displayname,instr(str_displayname," ")-1) ' Nachname = erste Teil des Displayname wscript.echo "rdnchange.vbs: Vorname NEU2 =" & str_vorname update = true end if end if if len(str_vorname)=0 then str_displayname = str_nachname ' Displayname anhand vor/Nachamebilden else str_displayname = str_nachname & ", " & str_vorname end if if str_displayname <> obj.displayname then wscript.echo "rdnchange.vbs: Displayname NEU2 =" & str_displayname update = true end if end if if Update then ' if msgbox ("Nachnamen anpassen ?",4) =6 then obj.displayname = str_displayname obj.givenName = str_vorname obj.sn=str_nachname obj.SetInfo ' Displayname schreiben ' end if end if If Len(str_displayname)>64 then str = Left(str_displayname,64) str_rdn = replace(str_displayname,",","\,") ' Sonderbehandung Komma If Len(str_displayname)<>0 then if obj.cn = str_displayname then wscript.echo "rdnchange.vbs: -> RDN entspricht Displayname - KEINE änderung" else wscript.echo "rdnchange.vbs: RENAME Quelle:" & obj.ADspath & " --> " & str_rdn ' if msgbox ("Objekt umbenennen ?",4) =6 then objOU.MoveHere obj.ADspath, "CN="& str_rdn ' Objekt verschieben wscript.echo "rdnchange.vbs: Rename beendet" ' end if end if else wscript.echo "rdnchange.vbs: Anzeigename leer" end if end if Next wscript.echo "rdnchange.vbs: beendet" wscript.quit(0)