Solved

How to remove underscore from user accounts

Posted on 2009-05-11
6
646 Views
Last Modified: 2013-11-25
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.
0
Comment
Question by:cjrcomputers
  • 3
  • 3
6 Comments
 
LVL 70

Expert Comment

by:Chris Dent
ID: 24354834

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
 
LVL 1

Author Comment

by:cjrcomputers
ID: 24354850
This is the username.
0
 
LVL 70

Expert Comment

by:Chris Dent
ID: 24355028

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
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 1

Author Comment

by:cjrcomputers
ID: 24355054
I believe I want to change both.
0
 
LVL 70

Accepted Solution

by:
Chris Dent earned 500 total points
ID: 24355600

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
 
LVL 1

Author Comment

by:cjrcomputers
ID: 24355781
Worked great!

Thanks.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Online collaboration can help businesses be more efficient, help employees grow their skills and foster a team environment.
When we talk about DevOps toolchains, I sometimes wonder how many people really get what we’re talking about. I don’t know if it’s just semantics or tone or something else, but sometimes I think it just sounds like buzzword sausage. So it’s always …
This tutorial will walk an individual through the steps necessary to join and promote the first Windows Server 2012 domain controller into an Active Directory environment running on Windows Server 2008. Determine the location of the FSMO roles by lo…
This tutorial will walk an individual through the process of transferring the five major, necessary Active Directory Roles, commonly referred to as the FSMO roles to another domain controller. Log onto the new domain controller with a user account t…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now