How to remove underscore from user accounts

When we first setup our Exchange Organization we setup all the user accounts with an underscore between the first initial last name.  (Ex: j_doe.) We are looking to remove that underscore in active directory and I'm wondering if there is a script to automatically remove underscore in user accounts within a specific OU.
LVL 1
cjrcomputersAsked:
Who is Participating?
 
Chris DentConnect With a Mentor PowerShell DeveloperCommented:

Okie dokie. This does both then. The other is called "userPrincipalName" in the directory, it should be in the form "someone@yourdomain.com".

If you're happy with it, remove the comment (') from these lines:

      ' objUser.Put "sAMAccountName", strNewUsername
      ' objUser.Put "userPrincipalName", strNewUPN
      ' objUser.SetInfo

Then I suggest you run it on a small / test set of users to start off with.

Chris
Set objOU = GetObject("LDAP://OU=Somewhere,DC=yourdomain,DC=com")
objOU.Filter = Array("user")
 
For Each objUser in objOU
  ' Prevent it catching computers with user objectClass
  If InStr(objUser.Get("objectCategory"), "Person") > 0 Then
 
    ' See if there's an Underscore in the Username
    strOldUsername = objUser.Get("sAMAccountName")
    strOldUPN = objUser.Get("userPrincipalName")
    If InStr(strOldUsername, "_") > 0 Then
 
      ' Remove the Underscore
      strNewUsername = Replace(strOldUsername, "_", "")
      strNewUPN = Replace(strOldUPN, "_", "")
 
      ' Pop up a box telling us about the change
      WScript.Echo "sAMAccountName: Old " & strOldUsername & _
        " New " & strNewUsername & vbCrLf & _
        "userPrincipalName: Old " & strOldUPN & _
        " New " & strnewUPN
 
      ' Once we're happy the script does as it should uncomment these:
      ' objUser.Put "sAMAccountName", strNewUsername
      ' objUser.Put "userPrincipalName", strNewUPN
      ' objUser.SetInfo
    End If
 
  End If
Next

Open in new window

0
 
Chris DentPowerShell DeveloperCommented:

Yes, but it depends exactly where it appears. Is this the username? Or name you see in the list in AD Users and Computers? Or DisplayName?

Chris
0
 
cjrcomputersAuthor Commented:
This is the username.
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
Chris DentPowerShell DeveloperCommented:

Okay, one more extension on that. The pre-Windows 2000 login name? Or the other? :)

If it's the "pre-Windows 2000 login name", which is the most popular, then this little VbScript below will change it for a single OU. You would have to specify the OU on the first line.

It doesn't change anything at the moment, just tells us about it.. for testing / approval.

Chris
Set objOU = GetObject("LDAP://OU=Somewhere,DC=yourdomain,DC=com")
objOU.Filter = Array("user")
 
For Each objUser in objOU
  ' Prevent it catching computers with user objectClass
  If InStr(objUser.Get("objectCategory"), "Person") > 0 Then
 
    ' See if there's an Underscore in the Username
    strOldUsername = objUser.Get("sAMAccountName")
    If InStr(strOldUsername, "_") > 0 Then
 
      ' Remove the Underscore
      strNewUsername = Replace(strOldUsername, "_", "")
 
      ' Pop up a box telling us about the change
      WScript.Echo "sAMAccountName: Old " & strOldUsername & _
        " New " & strNewUsername
 
      ' Once we're happy the script does as it should uncomment these:
      ' objUser.Put "sAMAccountName", strNewUsername
      ' objUser.SetInfo
    End If
 
  End If
Next

Open in new window

0
 
cjrcomputersAuthor Commented:
I believe I want to change both.
0
 
cjrcomputersAuthor Commented:
Worked great!

Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.