Хорошо, во-первых, позвольте мне сказать, что довольно непонятно, что вы здесь пытаетесь сделать, но до боли ясно, что вы делаете это «неправильно».
Прежде всего, поскольку похоже, что у вас нет сервера Exchange, я мог бы предложить его приобрести. Вероятно, это не тот, которым вы управляете сами, но в наши дни вы можете получить размещенное решение Exchange очень дешево (мой небольшой клиент с ~ 200 пользователями платит чуть менее 5 долларов за почтовый ящик / ГБ в очень хорошем центре обработки данных с хорошей хостинговой компанией, поддерживающей их вверх). Это решит проблему необходимости обновлять контакты и адреса электронной почты для людей внутри компании, потому что Exchange и AD позаботятся об этом за вас.
Затем, если вы действительно хотите пойти по пути ведения списка вручную пользователей электронной почты, есть гораздо более простой способ сделать это. Это руководство от office.microsoft о том, как настроить совместное использование контактов с Outlook . В вашем случае:
Адресная книга компании
, например. У вас будет одно центральное место, куда можно перейти, чтобы обновить контакт, и не нужно беспокоиться о том, чтобы отправить изменения всем, потому что каждый получит изменения, когда получит доступ к папке контактов.
Если, кстати, у вас есть сервер Exchange, обновите свой вопрос, и я обновлю свой ответ. Есть несколько действительно простых способов сделать это с помощью Exchange и даже достичь определенного уровня автоматизации, поэтому вам не нужно вручную обновлять контакты в профиле Outlook учетной записи службы.
Это действительно неправильный способ сделать это. Вам нужно получить контакты с сервера 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()
}
, и импорт может быть написан сразу после него (или выполнен, как вы это делаете сейчас).
Отказ от ответственности: я парень, работающий с Unix, и я знаю, черт возьми, все о PowerShell - он был изменен на основе сценария, который я нашел [здесь] (http://www.powershellneedfulthings.com/?p=35), и полностью не тестировался.