寻找邮箱服务器

Finding mailbox server

我正在尝试写一个 powershell 脚本,它会自动找到邮箱服务器并连接到它(使用 URI https://mailboxserver/powershell)。

问题是我还没有找到自动检测给定交换组织的邮箱服务器的方法。我找到了一种查找 CAS 服务器的方法,因为有人post了解了 outlook 是如何手动找到它的。

我尝试查询 AD 但我不知道哪个属性是 exchange 邮箱服务器独有的。

我也尝试了 DNS 记录,但发现 none 这有帮助。

有谁知道可以从AD或GC查询到邮箱服务器的唯一值吗?还是 DNS 记录或其他我没有想到的东西?

交流 2010 如有必要,我可以 post 林和域功能级别,但我正在路上。

提前致谢

下面的代码能满足您的需求吗?它使用 EWS - 有关 EWS 的更多详细信息,请参阅我的

# load the assembly
[void][Reflection.Assembly]::LoadFile("D:\Temp\Microsoft.Exchange.WebServices.2.2\lib\Microsoft.Exchange.WebServices.dll")

# set ref to exchange - may need to change the version
$s = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2)

# replace with your email address
$email = "your.email@domain.com"

# grab your own credentials
$s.UseDefaultCredentials = $true

# discover the url from your email address
$s.AutodiscoverUrl($email)
$s.Url.AbsoluteUri

您的 AD 用户属性具有此信息,尽管您必须从中解析邮箱服务器名称。

  • HomeMTA
  • msExchHomeServerName

因此,如果您有权访问 AD cmdlet,您也许可以通过这种方式获取邮箱服务器。

$adUser = get-aduser someuser -Properties msExchHomeServerName
$mailboxServerName = ($aduser.msExchHomeServerName -split "cn=")[-1]

这些属性可帮助您找到您当前的邮箱托管。在我的例子中,邮箱服务器是 msExchHomeServerName 中的最后一个 "item",因此我将字符串拆分为 "cn=",然后该数组的最后一个元素将是我的邮箱服务器名称。

然后您可以使用它连接到 Exchange 会话!

$Credentials = Get-Credential
$exchangePath = "http://$mailboxServerName/PowerShell/?SerializationLevel=Full"
$ExSession = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri $exchangePath  -Credential $Credentials –Authentication Kerberos
Import-PSSession $ExSession