supertux
Goto Top

Benutzernamen umbenennen

Hallo,

ich muss auf einem Windows 2008 DC, ca. 250 Benutzernamen umstellen.
In der Domäne vom 2008er sind noch zwei TS und ein 2003 Server eingebunden.

Es müssen nach der Umstellung alle Programme, Daten bzw. Profile vorhanden sein.

Kann ich die Benutzernamen automatisch umbenennen?

Nach Möglichkeit sollten, auch die Pfad auf dem TS (c:\useres\benutzername) angepasst
werden und verhindert werden, dass der 2008er ein temporäres Benutzerprofil danach anlegt.

Die Profile von Servergespeicherte, kann ich Notfalls auch selbst anpassen, aber wenn
das auch automatisch geht, wäre mir sehr geholfen.

Content-Key: 193215

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

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: griddi
griddi 24.10.2012 um 15:49:58 Uhr
Goto Top
Hallo,

nein, das ist leider fleißarbeit ...

Gruß griddi
Mitglied: colinardo
colinardo 24.10.2012 aktualisiert um 16:37:34 Uhr
Goto Top
Also das massenweise umbenennen geht so:
(LDAP Pfad muss natürlich an deine Umgebung angepasste werden)
Natürlich musst du noch die neuen Namen einbauen, entweder über ein Array das z.B. aus einer Textdatei mit den Umbenennungsdaten gefüttert wird.
Die Schleife itteriert über alle Benutzer in der angegebene OU die nicht deaktiviert sind.
set objUsers = GetObject("LDAP://ou=SBSUsers,ou=Users,ou=MyBusiness,dc=sbs2003,dc=local")  

for each objuser in objUsers
if objuser.AccountDisabled = FALSE then
	'Aktueller Logon-Name  
	currentname = objuser.sAMAccountName
	'Anzeigename  
	displayname = objUser.displayName
        'Logon Username setzen  
	objUser.Put "sAMAccountName","[HIER DER NEUE NAME DES USERS]"  
        'Profilpfad setzen  
        objUser.Put "profilePath","[\\SERVER\PFAD ZUM NEUEN PROFIL]"  
   	objUser.setinfo
End If
next

Dann musst du noch die Ordner mit den Benutzerprofilen umbenennen. Kannst du auch mit einer Schleife in VBS erledigen.

um das ganze mal in code zu fassen hier ein Entwurf mit dem du arbeiten kannst:

'VARIABLEN  
PFADUSERNAMESTXT = "c:\Users\benutzer\Desktop\usernames.txt"  
LDAPPFADUSERS = "LDAP://ou=SBSUsers,ou=Users,ou=MyBusiness,dc=sbs2003,dc=local"  
SERVERUSERPROFILEPATH = "\\SERVER\Users\"  
SERVERUSERPROFILEPATHLOCAL = "C:\Users"  

'Lese die neuen Usernamen in ein Assoziatives Array aus einer Textdatei in der diese in folgendem Format abgelegt sind:  
'	oldusername=newusername  
'---------------------------  
Set dict = CreateObject("Scripting.Dictionary")  
Set objFS = CreateObject("Scripting.FilesystemObject")  
Set newnamesfile = objFS.OpenTextFile(PFADUSERNAMESTXT)

Do While newnamesfile.AtEndOfStream <> True
      line = newnamesfile.ReadLine()
      marray = Split(line,"=",-1,1)  
      oldname = marray(0)
      newname = marray(1)
      dict.Add oldname, newname
Loop
'--------------------  

'Benenne die Benutzer um und setze den Profilpfad  
'------------------------------------------------  
set objUsers = GetObject(LDAPPFADUSERS)

for each objuser in objUsers
if objuser.AccountDisabled = FALSE Then
	
	'Aktueller Logon-Name  
	currentname = objuser.sAMAccountName
	'Anzeigename  
	displayname = objUser.displayName
        'Logon Username setzen  
	If dict.Exists(currentname) Then
		objUser.Put "sAMAccountName", dict(currentname)  
        'Profilpfad setzen  
        objUser.Put "profilePath",SERVERUSERPROFILEPATH & dict(currentname)  
   		objUser.setinfo
	End If
End If
Next

'--------------------------------------  

'Benenne die Profilordner um  
'---------------------------  

Set folderProfiles = objFS.GetFolder(SERVERUSERPROFILEPATHLOCAL)

For Each folder In folderProfiles.SubFolders
	If dict.Exists(folder) Then
		folder.Name = dict(folder)
	End If
Next