Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to create a contact list for Outlook 2010 that will contain contact information for every person in my company. I intend on keeping the list current, which means I will be manually adding new employees to the contact list, and removing contacts who no longer work here.

The contact list will reside in its own subfolder within the Outlook Contacts folder.

I want to periodically export this contact list as a .csv file, and allow the other employees in the company to import it into Outlook on their own computer, thus providing them with a comprehensive and up-to-date company contact list.

The problem is, Outlook 2010 only wants to merge contact lists, not overwrite them. This means that any contacts who are no longer with the company will not be removed from the contact lists on employee stations.

Is there any way to force Outlook 2010 to overwrite the contact list?

Oh how I long for the days of Outlook 2003 and its tidy .pab files.

share|improve this question
Is there a reason why the GAL isn't sufficient ? – Zypher Sep 21 '12 at 21:00

This really isn't the right way to do this. What you want is to get your contacts from an LDAP server -- either Exchange or another one you set up. (the linked article is for Outlook 2007, but similar info is available for 2010).

This ensures everyone has up-to-date contacts all the time (as long as they can talk to the LDAP server) and that changes get received by everyone in a timely fashion.

If for some reason you can't use LDAP (why?) you can write a PowerShell script that deletes all the contacts and then imports the new list.
Something like this should work for the delete bit:

olSession = (New-Object -ComObject Outlook.Application).Session
$olSession.Logon('Outlook') #Outlook is the profile name
$myContacts = $olSession.GetDefaultFolder($contactsFolder).Items

foreach ($Contact in $myContacts) {

and the import could be scripted right after it (or done however you do them now).

Disclaimer: I'm a unix guy and I know dick-all about PowerShell - This was modified from a script I found [here](, and is entirely untested.

share|improve this answer

Alright, first of all, let me say that it's pretty unclear what you're trying to do here, but painfully clear that you're doing it "wrong."

First of all, as it sounds like you don't have an Exchange server, I might suggest getting one. Probably not one you manage yourself, but you can get a hosted Exchange solution dirt cheap these days (a smallish client of mine with ~200 users pays just under $5/mailbox/GB, in a very nice datacenter with a good hosting company backing them up). This will solve the issue of needing to update contacts and email addresses for people inside the company, because Exchange and AD will take care of that for you.

Next, if you actually want to go down the path of maintaining a manual list of email users, there's a much easier way to do this. This is a tutorial from on how to set up contact sharing with Outlook. In your case:

  1. Create a service account user. Company Address Book, for example.
  2. Set up or import contacts.
  3. Email everyone with an invite to access the mailbox.
  4. Update contacts as needed.

You'd have one central location to go to to update a contact, and no worries about pushing changes out to everyone, because everyone would pull changes when they access the contact folder.

If, incidentally, you have an Exchange server, do update your question, and I'll update my answer. There are a couple of really simple ways to do this with Exchange, and even achieve some level of automation, so you don't need to manually update contacts on a service account's Outlook profile.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.