1

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

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

4

1 回答 1

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
      }
   }
}

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

于 2012-09-28T17:29:10.110 回答