2015-01-21 38 views
1

我想從Exchange服務器獲取所有用戶,我不想獲取用戶的聯繫人。事實上,我想讓所有AD用戶都成爲我們無法連接的Active Directory。從交換服務器獲取所有聯繫人

 mExchangeService.ImpersonatedUserId = new ImpersonatedUserId 
     { 
      Id = "[email protected]", 
      IdType = ConnectingIdType.SmtpAddress 
     }; 
     var contacts = _mExchangeService.FindItems(new FolderId(WellKnownFolderName.Contacts),new ItemView(1000)); 

我可以在上面的代碼來獲得用戶的接觸,但是這不是我想要的,我想用一個服務帳戶來獲取所有的Exchange Web服務的用戶。

回答

2

您可以使用EWS來檢索您的目錄用戶,使用ExhangeService.ResolveName。問題是EWS將返回不超過100個用戶,並且無法更改或執行任何分頁。所以如果你在一家大公司,你不可能真的使用EWS。

代碼:

var nameResolutionCollection = service.ResolveName("SMTP:", 
    ResolveNameSearchLocation.DirectoryOnly, true); 
foreach (var c in nameResolutionCollection) 
{ 
    Console.WriteLine(c.Mailbox.Address); 
} 
Console.WriteLine(nameResolutionCollection.Count()); // Maximum 100 users. 
+0

謝謝,我知道這個方法,只是可以得到100條記錄,這很奇怪,爲什麼只提供100個記錄 – 2015-02-12 01:21:07

+0

感謝你爲這個雅各布!可悲的是,100對於我們公司的ActiveDirectory來說還不夠。有沒有其他的選擇,或者我必須直接通過[ActiveDirectory](https://github.com/gheeres/node-activedirectory)? – Tholle 2015-09-22 19:37:00

+1

@Tholle:我認爲Active Directory是最好的選擇。 – 2015-09-24 07:38:54

相關問題