Любой способ перезаписать (не объединить) контакты Outlook при импорте из файла?
Я пытаюсь создать список контактов для Outlook 2010, который будет содержать контактную информацию для каждого сотрудника моей компании. Я намерен поддерживать текущий список, а это значит, что я буду вручную добавлять новых сотрудников в список контактов и удалять контакты, которые здесь больше не работают.
Список контактов будет находиться в отдельной подпапке в папке контактов Outlook.
Я хочу периодически экспортировать этот список контактов в виде файла.csv и разрешить другим сотрудникам компании импортировать его в Outlook на свой компьютер, предоставляя им полный и актуальный список контактов компании.
Проблема в том, что Outlook 2010 хочет объединять только списки контактов, а не перезаписывать их. Это означает, что любые контакты, которые больше не являются сотрудниками компании, не будут удалены из списков контактов на рабочих станциях.
Есть ли способ заставить Outlook 2010 перезаписать список контактов?
О, как я скучаю по дням Outlook 2003 и его аккуратных.pab файлов.
2 ответа
Это действительно не правильный способ сделать это. Вам нужно получить свои контакты с сервера LDAP - либо Exchange, либо другого, который вы настроили. (связанная статья предназначена для Outlook 2007, но аналогичная информация доступна для 2010 года).
Это гарантирует, что каждый человек постоянно имеет актуальные контакты (если они могут общаться с сервером LDAP) и что изменения своевременно поступают всем.
Если по какой-то причине вы не можете использовать LDAP (почему?), Вы можете написать сценарий PowerShell, который удалит все контакты, а затем импортирует новый список.
Нечто подобное должно работать для бита удаления:
olSession = (New-Object -ComObject Outlook.Application).Session
$olSession.Logon('Outlook') #Outlook is the profile name
$myContacts = $olSession.GetDefaultFolder($contactsFolder).Items
foreach ($Contact in $myContacts) {
$Contact.Delete()
}
и импорт может быть записан в сценарий сразу после него (или выполнен, как вы делаете это сейчас).
Disclaimer: I'm a unix guy and I know dick-all about PowerShell - This was modified from a script I found [here](http://www.powershellneedfulthings.com/?p=35), and is entirely untested.
Хорошо, прежде всего, позвольте мне сказать, что довольно непонятно, что вы пытаетесь сделать здесь, но до боли ясно, что вы делаете это "неправильно".
Прежде всего, так как кажется, что у вас нет сервера Exchange, я мог бы предложить его приобрести. Вероятно, не тот, которым вы управляете сами, но вы можете получить хостинговое решение Exchange очень дешево в наши дни (мой маленький клиент с ~200 пользователями платит чуть менее $5/mailbox/GB, в очень хорошем центре обработки данных с хорошей хостинг-компанией, поддерживающей их вверх). Это решит проблему необходимости обновления контактов и адресов электронной почты для людей внутри компании, потому что об этом позаботятся Exchange и AD.
Далее, если вы действительно хотите пойти по пути ведения списка пользователей электронной почты вручную, есть гораздо более простой способ сделать это. Это руководство от office.microsoft о том, как настроить общий доступ к контактам с Outlook. В твоем случае:
- Создайте учетную запись пользователя службы.
Company Address Book
, например. - Настройте или импортируйте контакты.
- Напишите всем с приглашением получить доступ к почтовому ящику.
- Обновите контакты по мере необходимости.
У вас будет одно центральное место, чтобы перейти к обновлению контакта, и вам не придется беспокоиться о том, чтобы распространять изменения для всех, потому что все будут получать изменения при доступе к папке контактов.
Если, кстати, у вас есть сервер Exchange, обновите свой вопрос, и я обновлю свой ответ. Есть несколько действительно простых способов сделать это с Exchange и даже достичь некоторого уровня автоматизации, поэтому вам не нужно вручную обновлять контакты в профиле Outlook учетной записи службы.