Contacts

以程式方式將聯繫人添加到交換伺服器地址簿

  • February 4, 2011

我有一個 Exchange Server 2010 正在執行,並希望以程式方式將聯繫人添加到伺服器中。實現這一目標的方法是什麼?

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

當您說“將聯繫人添加到伺服器中”時,您究竟是什麼意思?

Exchange 本身不包含聯繫人。您可以將聯繫人添加到活動目錄,以便在所有Exchange 使用者的全域通訊錄中可見。這裡有執行此操作的範常式式碼。

或者,您可以在 Outlook 中將聯繫人添加到單個使用者的聯繫人,這將使該個人使用者可以使用它們 - 如果您想讓多個使用者可以使用這些聯繫人,您當然可以為多個使用者執行此腳本。沒有測試過這個,但是這裡有範常式式碼可以幫助您入門。

如果您採用第一條路線並且有大量聯繫人要添加,那麼您最終可能會得到一個非常大且難以使用的全域地址列表 (GAL),並且僅發送僅供內部使用的電子郵件的不愉快前景給您聯繫人列表中的外部人員。可以通過創建多個 GAL 視圖來防止這種情況發生 - 一個包含聯繫人,一個僅包含 Windows 帳戶(也稱為“完整”交換使用者)。

您可以使用 Exchange 命令行管理程序來操作 GAL,如下所示(來自technet 論壇的範例)

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

你會看到一個像這樣的過濾器:

{(別名 -ne $null -and (ObjectClass -eq ‘user’ -or ObjectClass -eq ‘contact’ -or ObjectClass -eq ‘msExchSystemMailbox’ -or ObjectClass -eq ‘msExchDynamicDistributionList’ -or ObjectClass -eq ‘group’ -or ObjectClass -eq ‘publicFolder’))}

由於條件ObjectClass -eq ‘contact’ ,我已經強調了預設 GAL 的過濾器也包括聯繫人對象的位置。

因此,如果您希望預設 GAL 排除這些聯繫人對象,則必須像這樣重置 GAL 的收件人篩選器:

Set-GlobalAddressList “預設全域地址列表” -RecipientFilter {(Alias -ne $null -and (ObjectClass -eq ‘user’ -or ObjectClass -eq ‘msExchSystemMailbox’ -or ObjectClass -eq ‘msExchDynamicDistributionList’ -or ObjectClass -eq ‘group ’ - 或 ObjectClass -eq ‘publicFolder’))}

然後您可以為類似以下的聯繫人創建一些其他 GAL:

New-GlobalAddressList “聯繫人全域地址列表” -RecipientFilter {(Alias -ne $null -and ObjectClass -eq ‘Contact’)}

當我在一所大學工作時,我們使用了與上述範例類似的範例來控制學生在 GAL 中可以看到和看不到的內容,所以我知道這些原則是有效的,您只需要擺弄和測試過濾器,直到你會得到一個你滿意的結果。我們使用的是 Exchange 2007,但對於這樣的事情,應該沒有任何顯著差異。

引用自:https://serverfault.com/questions/231040