我正在寻找通过交换服务器获取动态通讯组的当前成员。动态通讯组基于指定的筛选器。“收件人更新服务”(RUS) 基于此过滤器按运行时查找每个联系人。我发现很多信息可以通过在经典命令行参数的交互中使用交换 powershell 的包装类来解决问题。但这不是我想要的方式。我认为应该有一个“Exchange Web Services”(EWS)的特殊命令来通过运行时或互操作获取动态成员。我无法找到有关此的一些信息。
有没有人有想法或一些信息来通过 c# 解决这个问题?
我正在寻找通过交换服务器获取动态通讯组的当前成员。动态通讯组基于指定的筛选器。“收件人更新服务”(RUS) 基于此过滤器按运行时查找每个联系人。我发现很多信息可以通过在经典命令行参数的交互中使用交换 powershell 的包装类来解决问题。但这不是我想要的方式。我认为应该有一个“Exchange Web Services”(EWS)的特殊命令来通过运行时或互操作获取动态成员。我无法找到有关此的一些信息。
有没有人有想法或一些信息来通过 c# 解决这个问题?
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
}
}
}
请记住,组的成员可以是常规组或其他动态通讯组以及用户、联系人和公用文件夹。