Solved

How can I use Excel or CSV files to modify an Exchange Custom Attribute in Active Directory?

Posted on 2008-06-17
6
480 Views
Last Modified: 2010-04-21
I need to use Exchange Custom Attribute 15 to allow for display of our internal 7-digit dialing (xxx-xxxx)... I have edited the template within Exchange 2007 so that it points to, and displays, the data contained within this attribute. I also have a spreadsheet containing the user account name, email address, etc. and have added a column that matches the users to reflect the data I wish to populate within the attribute...
I can manually edit the attribute within ADUC but would like to use a script or another method since I have some 2800 users to update...
Any help is appreciated!
0
Comment
Question by:gdozier
  • 4
  • 2
6 Comments
 
LVL 6

Accepted Solution

by:
aces4all2008 earned 500 total points
ID: 21808119
Something similar to the following cmd file should work for you.  You'll need to run it from a server 2003 machine (something with ldifde.exe anyway) and modify it to match your environment.  The script is set up to use csv file with only 2 fields: username and attribute value.  You should test this before using it on all 2800 users.
Set CsvFile=InputFile.csv

Set LdfFile=CustomAttr.ldf

Set AttrName=Name

Set LogFIle=ImportLog.txt
 
 

for /f %%a in (%CsvFile%) do call :MakeLdf %%a %%b

Call :WriteAttributes
 

Goto :End
 

:MakeLdf

Set UserID=%1

Set AttrValue=%2
 

for /f "delims=|" %%i in ('dsquery user -samid %UserID%') do echo dn: %%i>>%LdfFile%

echo changetype: modify>>%LdfFile%

echo replace: %AttrName%>>%LdfFile%

echo %AttrName%: %AttrValue%>>%LdfFile%

echo ->>%LdfFile%

echo.>>%LdfFile%
 

Goto :End
 

:WriteAttributes
 

ldifde -i -f %LdfFile% 
 

:End

Open in new window

0
 

Author Comment

by:gdozier
ID: 21809569
so to be sure I understand; this script takes a csv file with the two fields (username; attribute) and makes the ldf file which is then used to populate the attribute?
If I am missing something, please elaborate... I have a test domain on which I can test with using any number of users... If it works for 10 should work for all, correct?
0
 

Author Comment

by:gdozier
ID: 21812578
On another note, when the script is copy/pasted; in what type of format should the file be saved in order to utilize? And do I call the file using ldifde?
I know I appear ignorant and perhaps for good reason!  :)
0
 

Author Closing Comment

by:gdozier
ID: 31468129
Works perfectly with one exception: When the LDF file is created it places the DN data within quotes which causes a syntax error... Do a "find/replace" on the LDF file to remove the quotes and then manually run ldifde against the edited LDF file and all is good to go... I simply couldn't ascertain where the quotes were being inserted; if you can correct this in the above script then it will work without any edits other than those required for each environment...
0
 
LVL 6

Expert Comment

by:aces4all2008
ID: 21850959


"...when the script is copy/pasted; in what type of format should the file be saved in order to utilize?"

Save it as a cmd file using notepad

"...this script takes a csv file with the two fields (username; attribute) and makes the ldf file which is then used to populate the attribute?"

Yes

"...If it works for 10 should work for all, correct?"

Yes

"...Works perfectly with one exception: When the LDF file is created it places the DN data within quotes which causes a syntax error... "

See code snippet below


Good luck to you





Set CsvFile=InputFile.csv

Set LdfFile=CustomAttr.ldf

Set AttrName=Name

Set LogFIle=ImportLog.txt

 

 

for /f %%a in (%CsvFile%) do call :MakeLdf %%a %%b

Call :WriteAttributes

 

Goto :End

 

:MakeLdf

Rem Generates ldf file for use with ldifde application from csv fil
 

Set UserID=%1

Set UserDN=

Set AttrValue=%2

 

for /f "delims=|" %%i in ('dsquery user -samid %UserID%') do Call :FormatDN %%i

echo dn: %UserDN>>%LdfFile%

echo changetype: modify>>%LdfFile%

echo replace: %AttrName%>>%LdfFile%

echo %AttrName%: %AttrValue%>>%LdfFile%

echo ->>%LdfFile%

echo.>>%LdfFile%

 

Goto :End

 

:WriteAttributes

Rem Writes attributes from ldf file to active directory

 

ldifde -i -f %LdfFile% 

 

Goto :End
 

:FormatDN

Rem Removes quotes (first and last characters) from around distinguished name
 

Set UserDN=%1

Set UserDN=%UserDN:~1,-1%
 

Goto :End
 

:End

Open in new window

0
 

Author Comment

by:gdozier
ID: 21856243
Perfect!! Thanks for the code addition in addition to your previous assistance!
0

Join & Write a Comment

ADCs have gained traction within the last decade, largely due to increased demand for legacy load balancing appliances to handle more advanced application delivery requirements and improve application performance.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
In this video we show how to create a mailbox database in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Servers >> Data…
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 from a Windows Server 2008 domain controller to a Windows Server 2012 domain controlle…

744 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

10 Experts available now in Live!

Get 1:1 Help Now