Exchange 地址簿包括所有 AD 用户

Exchange 地址簿包括所有 AD 用户

我们目前已在 Domino 服务器后面设置了 Exchange 2010 作为测试。我们所有的用户都在 Active Directory 中,并将 AD 邮件属性设置为他们的电子邮件地址。我想知道是否有办法将所有 AD 用户都包含在地址簿中,即使他们没有 Exchange 帐户。我读过这篇文章:

Exchange GAL 中的非 Exchange 地址

关于为用户创建单独的联系人,但我想使用当前 AD 用户,而不是保留单独的用户列表。有什么想法吗?

答案1

我发现的唯一解决方案是使用 mailContact 方法。这很麻烦,因为您有两个列表,AD 用户和新联系人。无需导出 Domino 地址簿,因为所有用户都已在 AD 中并设置了邮件属性。所以我所做的就是创建一个 powershell 脚本,该脚本读取 AD 并为每个 AD 用户创建一个新联系人。它将在添加新联系人之前删除现有联系人以保持列表最新。我将按计划运行它。这不是最好的方法,但似乎是唯一的方法。

#
# list all email addresses in active directory and create mail contacts
#
# Created By Thomas Wheeler
# [email protected]
#

$WarningPreference = "SilentlyContinue" 
$VerbosePreference = "SilentlyContinue"

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010

$strFilter = "(&(objectCategory=User) )"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "name", "mail"
foreach ($i in $colPropList){
    $objSearcher.PropertiesToLoad.Add($i)
}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults){
    $objItem = $objResult.Properties; 
    if($objItem.mail -ne $null ){
        #Write-Host $objItem.name " (" $objItem.mail " )" $objItem.sAMAccountType 
        $name = $objItem.name | Out-String
        $email = $objItem.mail | Out-String
        Remove-MailContact -Identity $name.trim() -Confirm:$false   
        New-MailContact -Name:$name.trim() -ExternalEmailAddress $email.trim()

    }

}

相关内容