cgooden01
asked on
Display name change in Active Directory
Trying to find a script that will automate this for me. We have an organization name change and instead of doing it manually and so time consuming. I want to see if it anyone has a script or can point me in the right direction to go through my OU and change the name from previous name to a new one. I.E. Ex: display name Intercorp ITL to 24 ITC ITL
ASKER
Okay..let me look more into admodify tool. THanks..ill follow back up with you as soon as i get the result im looking to make happen..Thanks mike..
ASKER
Will this change just the display name to a new name. thats all i need. downloading it now
ASKER
Doesnt seem to be doing what i want ..I need it to show me the current display name settings, and then i just go in and make the update on all previous organization changes. But this you have to do manually. I actually need to have the flexibility to run a query display names that have the previous organ name and then make changes to reflect new changes in display name
Are you talking the display name for users as seen in Outlook, and by mail recipients - e.g."DISPLAY NAME" (someaddress@domain.com)?
If you want to make this attribute different to the user's actual name, you also need to modify a custom attribute on the user object to stop this display name being overwritten again after you have made the change:
extensionAttribute2 = DoNotUpdateDisplayName
What would be the rule for the users you want to change, i.e. what is the common feature they all share? If there is no common feature then it can't really be automated.
Tony
If you want to make this attribute different to the user's actual name, you also need to modify a custom attribute on the user object to stop this display name being overwritten again after you have made the change:
extensionAttribute2 = DoNotUpdateDisplayName
What would be the rule for the users you want to change, i.e. what is the common feature they all share? If there is no common feature then it can't really be automated.
Tony
Sorry - re-read your question. So you want to change all users with a displayName which includes 'Intercorp' and replace this with '24 ITC'.
The below script would do it.
Run it via cscript with these switches to output the users which will be changed:
cscript change_display_names.vbs /find:"Intercorp" /replace:"24 ITC"
If you're happy with these changes, run it with the following switch:
cscript change_display_names.vbs /find:"Intercorp" /replace:"24 ITC" /forreal:YES
This will change the displayName attribute, and update extension Attribute2 to enable this displayName to stick. Like I said, this is necessary only if the displayName is different to the user's name.
Hope this helps...
The below script would do it.
Run it via cscript with these switches to output the users which will be changed:
cscript change_display_names.vbs /find:"Intercorp" /replace:"24 ITC"
If you're happy with these changes, run it with the following switch:
cscript change_display_names.vbs /find:"Intercorp" /replace:"24 ITC" /forreal:YES
This will change the displayName attribute, and update extension Attribute2 to enable this displayName to stick. Like I said, this is necessary only if the displayName is different to the user's name.
Hope this helps...
strForReal = WScript.Arguments.Named("ForReal")
strOldString = WScript.Arguments.Named("Find")
strNewString = WScript.Arguments.Named("Replace")
Set objRoot = GetObject("LDAP://RootDSE")
strBase = "<LDAP://" & objRoot.get("defaultNamingContext") & ">;"
strFilter = "(&(objectclass=user)(displayName=*" & strOldString & "*));"
strAttrs = "distinguishedName;"
strScope = "subtree"
Set objConn = CreateObject("ADODB.Connection")
Set objComm = CreateObject("ADODB.Command")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objComm.ActiveConnection = objConn
objComm.Properties("Page Size") = 1000
objComm.CommandText = strBase & strFilter & strAttrs & strScope
Set objRS = objComm.Execute
If objRs.RecordCount > 0 Then
objRS.MoveFirst
Do
Set objUser = GetObject("LDAP://" & Replace(objRS.Fields(0).Value,"/","\/"))
strNewDisplayName = Replace(objUser.displayName,strOldString,strNewString)
WScript.Echo objUser.cn & String(40-Len(objUser.cn)," ") & " : (" & objUser.displayName & " to " _
& "be changed to " & strNewDisplayName & ")"
If UCase(strForReal) = "YES" Then
objUser.displayName = strNewDisplayName
objUser.extensionAttribute2 = "DoNotUpdateDisplayName"
objUser.SetInfo
End If
objRS.MoveNext
Loop Until objRS.EOF
End If
Set objRoot = Nothing
Set objComm = Nothing
Set objConn = Nothing
Set objUser = Nothing
Set objRS = Nothing
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
admodify is a tool I'd suggest
http://www.codeplex.com/admodify
One thing i like is that it is easy to undo the changes you made if you need to.
Thanks
Mike