Solved

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

Posted on 2008-06-17
6
489 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
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 

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

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

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

Marketers need statistics and metrics like everybody else needs oxygen. In this article we explain how to enable marketing campaign statistics for Microsoft Exchange mail.
Learn to move / copy / export exchange contacts to iPhone without using any software. Also see the issues in configuration of exchange with iPhone to migrate contacts.
In this video we show how to create an Accepted Domain 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 Mail Flow >> Ac…
To show how to create a transport rule 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 Mail Flow >> Rules tab.:  To cr…

867 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

21 Experts available now in Live!

Get 1:1 Help Now