Nepomuk78 10 Geschrieben 3. Oktober 2005 Melden Teilen Geschrieben 3. Oktober 2005 Hallo zusammen, ich habe erfolgreich per Script den Anzeigenamen (DisplayName) aller Benutzer in einer bestimmten OU im AD geändert. Vor dem Ändern wurden die Namen wie folgt angezeigt: Vorname Nachname Nun werden sie wie folgt angezeigt: Nachname, Vorname Beim öffnen des SnapIns Active Directory Benutzer und Computer werden die Benutzer allerdings immernoch in der Schreibweise Vorname Nachname angezeigt. Dies liegt daran, dass hier nicht der Anzeigename ausgegeben wird, sondern der CNAME (CN) des Objekts aus LDAP. Beipiel für den Benutzer "Max Muster" in der OU "Vertrieb": cn=Max Muster;ou=Vertrieb;dc=meinedomäne;dc=local Den (CN) möchte ich nun auch ändern. Weiss allerdings nicht wie ich das in ein Script packen soll. Jemand von Euch ne Idee? Das sind nämlich insgesamt rund 1000 User. Das möchte ich ungern zu Fuss machen :-) Schonmal besten Dank, Nepomuk Zitieren Link zu diesem Kommentar
Nepomuk78 10 Geschrieben 3. Oktober 2005 Autor Melden Teilen Geschrieben 3. Oktober 2005 keine ne Idee? :mad: Zitieren Link zu diesem Kommentar
Tom250376 10 Geschrieben 4. Oktober 2005 Melden Teilen Geschrieben 4. Oktober 2005 Hi folgendes gilt für NEUE benutzer, ich denke bei den bestehenden gibt es ein kleines Problem, oder hilft dir das doch? Gruß ToM Wie Ändern von angezeigten Namen von Active Directory-Benutzer Zusammenfassung Wenn in Active Directory ein neuer Benutzer erstellt wird, wird das Vollständiger Name Feld immer in FirstName LastName Format generiert. Dieses Feld legt das Feld Angezeigter Name wiederum auf Erstellung fest, daher formatierte Sie Ende mit einem FirstName LastName Globale Adressliste nach Oben. Mit Hilfe des Adsiedit-Dienstprogramms können Sie diese Änderung vornehmen. Adsiedit ändert nicht nur die Standardmethode zu dem Erstellen der Methode des Felds Angezeigter Name aber tritt in dem ausgewählten Format das Feld Benutzer Vollständiger Name (also das " Cn ") daher auch auf, wenn Sie in den Menüs Benutzer suchen und wenn Computer Snap-In. Zum Anfang Weitere Informationen Anweisungen von ADSIEdit ACHTUNG: Sie können schwerwiegende Probleme verursachen, wenn Sie das ADSI Edit-Snap-in, das LDP-Dienstprogramm oder jedes anderes LDAP-Version 3-Client verwenden und wenn die Attribute der Active Directory-Objekte falsch ändern. Diese Probleme können eine Neuinstallation von Microsoft Windows 2000 Server, Microsoft Exchange 2000 Server oder beiden Programmen erforderlich machen. Microsoft kann nicht dafür garantieren, dass Probleme, die ihre Ursache in einer unkorrekten Änderung von Active Directory-Objekten haben, behoben werden können. Es ist Ihr eigenes Risiko, diese Attribute zu ändern. 1. Fügen Sie ihre Windows 2000 Server-CD ein. 2. Navigieren Sie zu dem Verzeichnis \support\tools. 3. Doppelklicken Sie auf die Datei Support.cab. 4. Suchen Sie das adsiedit.msc Datei und das adsiedit.dll. Extrahieren Sie sie in ihrem Verzeichnis %systemroot%\system32. 5. Führen Sie regsvr32 adsiedit.dll aus. 6. Starten Sie Microsoft Management Console, und fügen Sie dann das ADSI Edit-Snap-In hinzu. 7. Klicken Sie mit der rechten Maustaste auf den oberste Knoten, und klicken Sie dann auf Verbinden mit. 8. Ändern Sie hier in "dem Configuration Container" den Namenskontext, und klicken Sie hier dann auf OK, um zu binden, und zu authentifizieren. 9. Erweitern Sie den Knoten von Configuration Container und erweitern Sie dann den Knoten Konfiguration. 10. Sie erweitert das <B>-cn DisplaySpecifiers = Knoten von </B> und dann doppelklicken Sie auf <B> CN, 409 </B> =. HINWEIS: 409 die Gebietsschemaid für US-Englisch ist. Wenn Sie in einer mehrsprachigen Umgebung sind, müssen Sie Änderungen möglicherweise an die anderen Codes vornehmen. Die meist asiatischen Codes werden bereits festgelegt. Das ITU und das Internationale Organization for Standardization definieren die Codepagen. Besuchen Sie für Weitere Informationen die folgenden ITU- und die folgenden ISO Web-Seiten: http://www.itu.int'>http://www.itu.int (http://www.itu.int) http://www.iso.ch/iso/en/ISOOnline.openerpage'>http://www.iso.ch/iso/en/ISOOnline.openerpage (http://www.iso.ch/iso/en/ISOOnline.openerpage) Erhalten Sie für weitere Information zu der Unterstützung von lokalisiertem Exchange Clients, wenn unten auf Artikelnummer klickt, um den Beitrag in dem Microsoft Knowledge Base anzuzeigen: 150977 (http://support.microsoft.com/kb/150977/EN-US/) XADM: Unterstützen von lokalisierten Exchange-Clients 11. In dem rechten Fenster öffnet die Eigenschaften Sie " CN User-Display = ". 12. Führen Sie CreateDialog auf der optionalen Eigenschaft einen Bildlauf durch. 13. Das Attribut auf % < Sn> festgelegt. % < GivenName>. Stellen Sie sicher, dass Sie auf Festlegen klicken. Anmerkung Die einzigen Tokens, die in dem DislayName formatiert werden können, sind % <SN>, % <GivenName> und % <Initialen>. 14. Klicken Sie auf OK, um das Dialogfeld zu schließen. 15. In Active Directory-Benutzer und In-Computer erstellen einen neuen Benutzer; daher der Name ( und der Anzeigename) werden entsprechend ihrer Regel erstellt. Zitieren Link zu diesem Kommentar
Zearom 10 Geschrieben 4. Oktober 2005 Melden Teilen Geschrieben 4. Oktober 2005 ich denke bei den bestehenden gibt es ein kleines Problem, naja so riesig ist es nun auch nicht ;) *optimismus*verbreit* @Nepumuk78 könntest du das Script mal posten? eine änderung des CNs macht man am besten über den DN eines LDAP-Objektes. Zitieren Link zu diesem Kommentar
Tom250376 10 Geschrieben 4. Oktober 2005 Melden Teilen Geschrieben 4. Oktober 2005 na immerhin nur ein kleines....sorry....vielleicht hilft ihm ja der hint auf GivenName Zitieren Link zu diesem Kommentar
Nepomuk78 10 Geschrieben 4. Oktober 2005 Autor Melden Teilen Geschrieben 4. Oktober 2005 Danke für die Tipps @Tom Dein Vorschlag kenne ich. Das wurde auch bereits gemacht - problemlos :-). Es war ja Sinn und Zweck der Sache, dass nicht nur bereits bestehende User-Accounts einen CN und DisplayName, GivenName à la Nachname, Vorname bekommen , sondern auch Accounts die zukünftig angelegt werden. Mein Problem ist halt eben bei den bereits bestehenden Accounts. Den DisplayName und GivenName konnte ich in einem Rutsch mit nem Script ändern. Den CN allerdings nicht - bis jetzt jedenfalls! Da muss ich wohl noch ein wenig suchen und dängeln :-( Zitieren Link zu diesem Kommentar
zordan 10 Geschrieben 4. Oktober 2005 Melden Teilen Geschrieben 4. Oktober 2005 ui ui ui, in einem gut sortieren Home-Verzeichnis findet sich doch so einiges :D Stand damals selbst vor dem Problem und hab mir da was gezimmert und erstaunlicherweise hat ich nen guten Tag und hab fleissig den Quellcode kommentiert :) Bei uns wurde der DisplayName des Users in Vorname Nachname umgebaut und der CN in nachname.vorname. Das Hexenwerk funktioniert über die MoveHere Methode in VBScript. ' ### Script zum Umbennenen der User in einer OU ' ### Tim Riemer, 29.03.2004 ' Verbindung zur Domäne set objRoot = GetObject("LDAP://rootDSE") strDomain = objRoot.Get("DefaultNamingContext") ' Logdatei anlegen strScriptPfad = WScript.ScriptFullName strLogPfad = left(strScriptPfad, InstrRev(strScriptPfad, "\")) set objFSO = CreateObject("Scripting.FileSystemObject") with objFSO dateiPfad = .BuildPath(strLogPfad, "ADNames") if not .FolderExists(dateiPfad) then .CreateFolder(dateiPfad) dateiName = "ADNames" & CStr(Now) & ".log" dateiName = replace(dateiName, ":", "-") pfadName = .BuildPath(dateiPfad, dateiName) set objDatei = .CreateTextFile(pfadName) end with SchreibLog Now SchreibLog "Skript gestartet" & vbCrLf ' Benutzer fragen ... strOU = InputBox("Welcher Container soll bearbeitet werden?" & vbCrLf & "(LDAP-Angabe ohne Domäne)",, "CN=Users") ' Verbindungsstring strObjOU = "LDAP://" & strOU & "," & strDomain ' OU ansprechen set objOU = GetObject(strObjOU) ' Log-Zähler initialisieren intErfolg = 0 intFehler = 0 ' ADSI-Fehlermeldungen verfügbar? on error resume next set ADError = nothing set ADError = CreateObject("ADsError") on error goto 0 if ADError is nothing then ADSIError = false else ADSIError = true end if set ADError = nothing objOU.Filter = Array("user") on error resume next 'Fehler selbst abfangen For each usr in objOU if instr(usr.SamAccountName, "$") = 0 AND usr.displayName <> "Service User" then strName = usr.get("name") schreibLog "Benutzer: " & usr.SamAccountName vLast = usr.get("Sn") vFirst = usr.get("GivenName") vFullname = vFirst + " " + vLast ' für den displayName vCN = vLast + "." + vFirst ' für name (= cn) vCN = LCASE(vCN) ' displayName setzen usr.put "displayName", vFullName usr.setinfo ' name/cn setzen: erfordert Umbenennen durch die "MoveHere"-Methode! strRenameCN = "LDAP://cn=" & strName & "," & strOU & "," & strDomain set objUsrRename = objOU.MoveHere(strRenameCN, "cn=" & vCN) ' Logging: Fehler kontrollieren if err.number <> 0 then if ADSIerror then Set objError = CreateObject("ADsError") strKlartext = objError.GetErrorMessage(Err.number) end if SchreibLog "Fehler: " & strKlartext & " " & err.number & ", " & err.description intFehler = intFehler + 1 err.Clear if ADSIerror then set objError = nothing else SchreibLog "Erfolg" intErfolg = intErfolg + 1 end if SchreibLog vbCrLf end if Next on error goto 0 'Fehlerbehandlung wieder an ' Erfolgsmeldung ausgeben saylog intErfolg & " Benutzer bearbeitet, " & intFehler & " Fehler aufgetreten." & vbCrLf schreibLog Now schreibLog "Skript beendet" objDatei.Close sub SchreibLog(strText) ' Funktion: schreibt angegebenen Text in die Logdatei ' Eingabeparameter: ' Kommentar: objDatei.WriteLine strText end sub sub saylog(strText) msgBox strText SchreibLog strText end sub Das ganze hab ich extra fürs Debugging mit LogFile geschrieben und zudem geht es nur OU weise vor. Somit kannst du es erstmal auf eine Test-OU loslassen und zerschießt dir nicht die AD Struktur. Zitieren Link zu diesem Kommentar
Nepomuk78 10 Geschrieben 6. Oktober 2005 Autor Melden Teilen Geschrieben 6. Oktober 2005 Das ist genau das was ich brauche!!!! 1000 Dank @zordan Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.