Location: Articles

Articles

Articles

Automatically Bulk Add a Unique SMTP Email Address to Each NT User Account in a Domain

By on Wednesday, November 28, 2007 5:23 PM

Problem: Your user accounts in Active Directory do not have an email address associated with them, you have a lot of user accounts, and you must get an SMTP address associated with the accounts immediately. This script will perform the AD Voodoo for you, automagically.

If you need to bulk-add an SMTP email addresses to your non-Exchange NT user accounts in order to use 3rd-party AD management tools, a new mail system, etc, you can now do so very easily with this simple yet powerful script. 

The big question: How do I auto-create the first portion of each users email address since it is unique? Each email address has to be the same as the user’s NT logon name! How do I easily insert these addresses into the NT account properties for hundreds or thousands of accounts?

Fear not! The below .vbs script looks up the SamAccountName from each user accounts' UPN (logonname@domain.com), and then writes it into the accounts e-Mail field properties of the General tab.  Neat-O!

In the script below, you have option to set the portion of ‘@domain.com’ to your environment, as well as the domain and OU path the script should run against. You can do one user, one OU, or the entire domain!

 

OK- Let’s change things!

*Disclaimer- Always test scripts first in a non-production environment! 

Prerequisites for editing the user account Mail attribute

Logon to a DC as a domain administrator and run the below script.

Instructions for setting and testing the script

1.       Copy and paste the example script below into notepad.

2.       Change the value in RED for ‘yourdomain.com’ to your email domain

3.       Change the RED value for LDAP path to point to correct OU and root domain

4.       Save the file with a .vbs extension, for example:  AddMailAddress .vbs

5.       Open a CMD prompt, drag/drop the script into the CMD window and hit enter

NOTES:

ALWAYS TEST FIRST! To test script results, create a test user account under a test OU called "TestOU" as in the script below. Run script and you will see the email address inserted under the General properties for that user account. Check that it is the result that you want.

CAUTION! If you run this script against accounts that already have an email address in the e-Mail field of the General tab / user account properties, the existing address may be overwritten!

Sample Script to Batch-Set the Mail Attribute for AD User Objects

 (copy area in grey and paste in notepad)

' AddMailAddress.vbs
' Sample VBScript to bulk-add email address to AD non mail-enabled user accounts in a domain
' SysOp Tools, Inc – Offered ‘as-is’ – use with care
' Version 1.0 – August 2007
' --------------------------------------------------------------'

 

On Error Resume Next


Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand =   CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _

    "SELECT AdsPath,samAccountName,userPrincipalName FROM " & _

        "'LDAP://OU=TestOU,dc=yourdomain,dc=com' WHERE objectCategory='user'" 

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    strUser = objRecordSet.Fields("ADsPath").Value

    strNewUPN = objRecordSet.Fields("samAccountName").Value & "@" & "yourdomain.com"

    Set objUser =  GetObject(strUser)

    objUser.Mail = strNewUPN

    objUser.SetInfo

    objRecordSet.MoveNext

Loop

 

' -------------------------------------------------------------'
' Important -  change LDAP:// path to reflect the proper user, OU, or domain the script should modify
' -------------------------------------------------------------'
' End of Free Sample AddMailAddress VBScript

 

Provided by:Enterprise Support Team SysOp Tools, Inc  www.sysoptools.com             

Comments

By Steve @ Tuesday, April 07, 2009 5:03 PM

Nice script- Thank you SysOp Tools. btw your expiring password reminder and web based self service software is great!


By Owen @ Tuesday, December 08, 2009 11:55 AM

Superb. I can't get it to work with OUs within another OU, eg ou=users,ou=admin - the script doesn't seem to run. I'll just move each OU to apply the settings. Thanks.


You must be logged in to post a comment. You can login here
Copyright 2009 ActiveDir.org
Terms Of Use