Solved

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

Posted on 2008-06-17
6
512 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

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

This article describes my battle tested process for setting up delegation. I use this process anywhere that I need to setup delegation. In the article I will show how it applies to Active Directory
A company’s centralized system that manages user data, security, and distributed resources is often a focus of criminal attention. Active Directory (AD) is no exception. In truth, it’s even more likely to be targeted due to the number of companies …
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…
This video discusses moving either the default database or any database to a new volume.

733 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