[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

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

Posted on 2008-06-17
6
Medium Priority
?
525 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 2000 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

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

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!

Question has a verified solution.

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

The main intent of this article is to make you aware of ‘Exchange fail to mount’ error, its effects, causes, and solution.
Are you looking for the options available for exporting EDB files to PST? You may be confused as they are different in different Exchange versions. Here, I will discuss some options available.
This video demonstrates how to sync Microsoft Exchange Public Folders with smartphones using CodeTwo Exchange Sync and Exchange ActiveSync. To learn more about CodeTwo Exchange Sync and download the free trial, go to: http://www.codetwo.com/excha…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
Suggested Courses

656 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