以编程方式将联系人添加到交换服务器地址簿

我有一个Exchange服务器2010运行,并希望以编程方式将联系人添加到服务器。 有什么办法实现这一目标?

最好在Java中完成,但VB6也可以。

当你说“添加联系人到服务器”,你究竟是什么意思?

Exchange本身不包含联系人。 您可以将联系人添加到活动目录,以便在全局通讯簿中为所有交换用户显示。 这里有一些示例代码。

或者,您可以将联系人添加到Outlook中的单个用户的联系人,这将使该个人用户可以使用联系人 – 当然,如果要将联系人提供给多个人,则当然可以为多个用户运行此脚本。 没有testing过这个,但这里有示例代码可以让你开始。

如果你走的是第一条路线,并有大量的联系人添加,那么你可能会得到一个非常大且难以使用的全局地址列表(GAL),并且仅用于内部使用的电子邮件的不愉快前景给联系人列表中的外部人员。 通过创buildGAL的多个视图(包括联系人和仅包含Windows帐户(也称为“完整”交换用户))来防止这种情况是可能的。

您可以使用Exchange命令行pipe理程序来操作GAL,如下所示(来自technet论坛的示例)

Get-GlobalAddressList "Default Global Address List" |FL *Filter 

你会看到一个filter,如:

{(别名-ne $ null-和(ObjectClass -eq'用户'或ObjectClass -eq'联系人'或ObjectClass -eq'msExchSystemMailbox'或ObjectClass -eq'msExchDynamicDistributionList'或ObjectClass -eq'组' ObjectClass -eq'publicFolder'))}

由于条件ObjectClass -eq'contact' ,我已经突出显示了默认GALfilter包含联系人对象的位置

所以,如果你想要你的默认GAL排除这些联系人对象,那么你将不得不重置你的GAL收件人filter像这样:

Set-GlobalAddressList“Default Global Address List”-RecipientFilter {(别名-ne $ null-和(ObjectClass -eq'user')或ObjectClass -eq'msExchSystemMailbox' – 或ObjectClass -eq'msExchDynamicDistributionList' – 或ObjectClass -eq'组' – 或ObjectClass -eq'publicFolder'))}

然后你可以创build一些其他的GAL类似于这样的联系人:

New-GlobalAddressList“Contacts Global List List”-RecipientFilter {(Alias -ne $ null-和ObjectClass -eq'Contact')}

当我在一所大学工作时,我们玩过类似于上面的例子来控制学生在GAL中可以看不到的东西,所以我知道这些原则是有效的,你只需要拨动和testingfilter,直到你会得到一个令你满意的结果。 我们正在使用Exchange 2007,但对于这样的事情应该没有任何显着的差异。