?
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
?
523 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
NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

 

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

Office 365 Training for Admins - 7 Day Trial

Learn how to provision tenants, synchronize on-premise Active Directory, implement Single Sign-On, customize Office deployment, and protect your organization with eDiscovery and DLP policies.  Only from Platform Scholar.

Question has a verified solution.

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

Check out this step-by-step guide for using the newly updated Experts Exchange mobile app—released on May 30.
Let's recap what we learned from yesterday's Skyport Systems webinar.
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses
Course of the Month9 days, 7 hours left to enroll

762 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