在没有PowerShell的情况下通过c#使用Exchange收件人更新服务

时间:2012-06-26 13:27:41

标签: c# dynamic outlook add-in exchange-server

我正在寻找交换服务器获取动态通讯组的当前成员。动态通讯组基于指定的筛选器。 “收件人更新服务”(RUS)根据此筛选器按运行时查找每个联系人。 我通过在经典命令行参数的交互中使用包装类的exchangehell来找到解决问题的大量信息。但这不是我想要的方式。 我认为应该有一个特殊的“Exchange Web服务”命令(EWS)来通过运行时或互操作来获取动态成员。我无法找到有关此事的一些信息。

有人有想法或一些信息通过c#解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

DirectoryServices似乎对我有用。创建指向动态通讯组列表的DirectoryEntry(架构类名=“msExchDynamicDistributionList”),然后使用“msExchDynamicDLBaseDN”和“msExchDynamicDLFilter”属性搜索成员:

using (var group = new DirectoryEntry("LDAP://CN=MyGroup,OU=MyOU,DC=company,DC=com"))
{
   string baseDN = (string)group.Properties["msExchDynamicDLBaseDN"].Value;
   string filter = (string)group.Properties["msExchDynamicDLFilter"].Value;

   using (var searchRoot = new DirectoryEntry("LDAP://" + baseDN))
   using (var searcher = new DirectorySearcher(searchRoot, filter, propertiesToLoad))
   using (var results = searcher.FindAll())
   {
      foreach (SearchResult result in results)
      {
         // Use the result
      }
   }
}

请记住,该组的成员可以是常规组或其他动态通讯组以及用户,联系人和公用文件夹。