使用 EWS Managed API 2.2 获取用户帐户的别名列表

Using EWS Managed API 2.2 to get a list of aliases of user's account

我很难理解如何在使用 EWS managed API 时在 PowerShell 中获得一些基本属性,他们的文档几乎没有关于使用 Powershell 完成大多数任务的内容。

我真正想看到的是用户帐户中的所有别名。但我也不明白如何在此处列出一些特定字段,例如 Microsoft.Exchange.WebServices.Data.AlternateId

$Email = 'user@example.com'
$Pass = 'example4321'
#path for the Exchange WebServices DLL
$EWSPath = "C:\path\Microsoft.Exchange.WebServices.dll" 
#Connecting with EWS/Exchange
[Reflection.Assembly]::LoadFile($EWSPath) | Out-Null
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1)
$service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($Email,$Pass)
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
$service.traceenabled = "true"

#Defining the Root folder

$RootFolderId = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$email)
$RootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service,$RootFolderId)
# ################
# Here I want to list all the user's aliases.
##################
$Mailbox = $RootFolder.getMailbox()

ResolveName https://msdn.microsoft.com/en-us/library/office/dn645423(v=exchg.150).aspx 可能是您在 EWS 中最接近的东西,例如,如果您解析名称,然后 return 目录中的联系信息。但是它只会 return 电子邮件地址中的前 3 个地址 collection.eg

$ncCol = $service.ResolveName("address@domain.com", [Microsoft.Exchange.WebServices.Data.ResolveNameSearchLocation]::DirectoryOnly, $true);
if($ncCol.Count -gt 0){
  #Write-output ("Found " + $ncCol[0].Contact)
}

如果您使用的是 Office365,那么这种类型的东西最适合图表 API,它将 return 您要查找的所有信息,例如 https://graph.windows.net/youorg.com/me/proxyAddresses 将 return 一个账户的所有代理地址