78107
Goto Top

mehrere Benutzeranmeldenamen ändern per Script o.ä.

Hallo,

ich bin neu hier und hoffe, dass ihr mir helfen könnt.

Ich müsste ca. 100 Benutzeranmeldenamen in AD ändern. Kann man das mit einem Script oder ähnlichem automatisieren? Möchte nur ungern jeden User "in die Hand nehmen".
Ich kenne mich mit Scripten allerdings noch nicht wirklich aus. Also wenn dann bitte eine Erklärung für Anfänger face-wink

Zu unserem Netzwerk:
DomainControler: Windows Server 2000
Mitgliedsserver: Windows Server 2003 Standard

Vielen Dank schon mal für eure Hilfe!!

Beste Grüße
Björn

Content-Key: 114898

Url: https://administrator.de/contentid/114898

Printed on: April 19, 2024 at 15:04 o'clock

Member: Biber
Biber Apr 28, 2009 at 16:53:28 (UTC)
Goto Top
Moin #mfkvfnnme# ,

willkommen im Forum.
Ich müsste ca. 100 Benutzeranmeldenamen in AD ändern
äh ja.

Und hast Du auch schon einen detailierteren Plan?

Ich meine, hast du eine Liste "usernameJetzt"->"usernameSoll"?
Als Text, Fotokopie, Exceldatei ?
Oder wird der Anmeldename aus den ersten drei Zeichen des Systemdatums plus dem String "#mfkvfnnme#" gebildet?

Oder willst du gar etwas ganz anderes ändern?

Sorry, dass wir noch kein Skript hochgeladen haben....

Grüße
Biber
Mitglied: 78107
78107 Apr 28, 2009 at 17:05:26 (UTC)
Goto Top
Hallo Biber,

vielen Dank für die schnelle Reaktion.

Tut mir leid, habe tatsächlich etwas wenig input gegeben...

Das Problem ist folgendes:

Wir haben ca. 200 Benutzerkonten in AD. Leider sind bei ca. 100 davon die Benutzeranmeldenamen "falsch". (nachnamev statt NachnameV)
Ich weiß, dass macht bei der Anmeldung keinen Unterschied. Aber wir haben mittlerweile 2 Anwendungen, bei denen es tatsächlich einen unterschied macht. Wenn man sich zB. als KahlB anmeldet, aber in AD als kahlb angelegt ist, funktionieren diese Anwendungen nicht.

Meine Aufgabe ist es jetzt also, die fehlerhaften Konten zu finden, und zu ändern. Leider habe ich noch keinen Plan wie ich das machen kann...

Vielen Dank noch mal!
Member: xm-bit
xm-bit Apr 29, 2009 at 06:44:51 (UTC)
Goto Top
Hi Björn,

schau dir doch mal ds Tool ADMT an. Vielleicht kannst es gebrauchen.
Inwieweit willst du denn Änderungen vornehmen??

Soll es aussehen wie:

AbkürzungFirma001
AbkürzungFirma002

Gib uns doch mal ein wenig mehr infos.

mfg
Sascha
Mitglied: 78107
78107 Apr 29, 2009 at 07:57:06 (UTC)
Goto Top
Wie schon beschrieben sieht es bei uns zur Zeit so aus, dass die Benutzeranmeldenamen alle unterschiedlich sind. Teilweise mit Groß- und Kleinbuchstaben, teilweise nur mit Kleinbuchstaben.
Da wir aber 2 Anwendungen haben, bei denen es wichtig ist, dass man sich genau so anmeldet wie in AD angelegt, wollen wir das gerne vereinheitlichen.

Das heißt ich muss jetzt die Konten finden, die falsch sind, und diese anpassen.

Aussehen soll es am Ende einfach so:
NachnameV(orname)
zB. KahlB und nicht etwa kahlb oder Kahlb oder so...

Vielleicht "einfach" mit exportieren, ändern, importieren?

Werde mir das ADMT mal runter laden.
Member: xm-bit
xm-bit Apr 29, 2009 at 13:43:27 (UTC)
Goto Top
Hi,

ich habe noch etwas gefunden. Damit du nicht dein AD per hand durchwühlen mußt, kannst du dieses Script nehmen.

http://www.faq-o-matic.net/2008/10/29/jos-active-directory-dokumentatio ...

Damnit kannst du alle usernamen deiner Domäne dir anzeigen lassen. Da weißt du zumindest schon mal, wie jeder einzelne Username angelegt worden ist.

mfg
Sascha
Member: bastla
bastla Apr 29, 2009 at 20:17:18 (UTC)
Goto Top
Hallo #mfkvfnnme#!

Du könntest es mit dem folgenden Script versuchen:
Ignore = "#Administrator#Gast#TsInternetUser#krbtgt#...#" 'diese Kontobezeichnungen nicht ändern  

Set Conn = CreateObject("ADODB.Connection")  
Set Cmd = CreateObject("ADODB.Command")  
Conn.Provider = "ADsDSOObject"  
Conn.Open "Active Directory Provider"  
Set Cmd.ActiveConnection = Conn

Cmd.Properties("Cache Results") = False  
Cmd.CommandText = "<LDAP://" & GetObject("LDAP://RootDSE").Get("defaultNamingContext") & _  
    ">;(&(objectclass=user)(objectcategory=person));distinguishedName;subtree"  
Set RecordSet = Cmd.Execute
 
Do Until RecordSet.EOF
    Set User = GetObject("LDAP://" & RecordSet.Fields("distinguishedName"))  
    sAMAccountName = User.sAMAccountName
    If InStr(1, Ignore, "#" & sAMAccountName & "#", vbTextCompare) = 0 Then  
        LastChar = Right(sAMAccountName, 1)
        If LastChar <> UCase(LastChar) Then
            WScript.Echo sAMAccountName
            'User.sAMAccountName = Left(sAMAccountName, Len(sAMAccountName) - 1) & UCase(LastChar)  
            'User.SetInfo  
        End If
    End If
    RecordSet.MoveNext
Loop
Zum Testen wäre es vorteilhaft, das Script (Annahme: gespeichert als "C:\Scripts\RenameAccounts.vbs") mit
cscript //nologo C:\Scripts\RenameAccounts.vbs
direkt an der Kommandozeile zu starten (um nicht eine größere Menge Messageboxen wegklicken zu müssen) - als Ergebnis solltest Du eine Liste aller zu behandelnden Konten erhalten, wobei die in der Zeile 1 angeführten (jeweils - zu Deinem Nick passend face-wink - durch "#" eingerahmten) Konten übersprungen werden.

Wenn das Ergebnis vernünftig aussieht, kannst Du vom Beginn der Zeilen 21 und 22 das Kommentarzeichen ' entfernen - dann werden beim nächsten Scriptlauf die Anmeldenamen tatsächlich geändert.

Grüße
bastla