我正在尝试为 Outlook 2010 创建一个联系人列表,其中包含我公司每个人的联系信息。我打算保持列表最新,这意味着我将手动将新员工添加到联系人列表中,并删除不再在这里工作的联系人。
联系人列表将驻留在 Outlook 联系人文件夹内其自己的子文件夹中。
我想定期将此联系人列表导出为 .csv 文件,并允许公司中的其他员工将其导入他们自己计算机上的 Outlook,从而为他们提供全面且最新的公司联系人列表。
问题是,Outlook 2010 只会合并联系人列表,而不会覆盖它们。这意味着任何不再在公司工作的联系人都不会从员工工作站的联系人列表中删除。
有什么办法可以强制 Outlook 2010 覆盖联系人列表?
哦,我多么怀念 Outlook 2003 及其整洁的 .pab 文件的日子。
答案1
这确实不是正确的做法。你想要的是从 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.
答案2
好吧,首先,我要说的是,你在这里想要做什么并不十分清楚,但很明显你做得“错”。
首先,听起来您没有 Exchange 服务器,我建议您购买一台。可能不是您自己管理的,但如今您可以以极低的价格获得托管 Exchange 解决方案(我的一个拥有约 200 名用户的小型客户,每个邮箱/GB 的费用不到 5 美元,数据中心非常好,有一家优秀的托管公司为其提供支持)。这将解决需要更新公司内部人员的联系人和电子邮件地址的问题,因为 Exchange 和 AD 会为您处理这些问题。
接下来,如果您确实想维护电子邮件用户的手动列表,那么有一种更简单的方法可以做到这一点。 这是来自 office.microsoft 的有关如何设置与 Outlook 共享联系人的教程. 就你的情况而言:
Company Address Book
例如,创建服务帐户用户。- 设置或导入联系人。
- 向所有人发送电子邮件,邀请他们访问邮箱。
- 根据需要更新联系人。
您将有一个中心位置来更新联系人,并且不必担心将更改推送给每个人,因为每个人在访问联系人文件夹时都会提取更改。
如果您恰好有 Exchange 服务器,请更新您的问题,我也会更新我的答案。有几种非常简单的方法可以使用 Exchange 执行此操作,甚至可以实现一定程度的自动化,因此您无需手动更新服务帐户 Outlook 配置文件上的联系人。