Philipp Matzka
Philipp Matzka

Reputation: 65

Use Exchange Recipient Update Service via c# without PowerShell

I'm searching to get the current members of a dynamic distribution group by exchange servers. Dynamic distribution groups are based on a specified filter. The "Recipient Update Service" (RUS) find each contact by runtime, based on this filter. I've found a lot of information to solve the problem by using a wrapper class of exchange powershell in interaction of classic commandline arguments. But this is not my intended way. I thought there should be a special command of "Exchange Web Services" (EWS) to get the dynamic members by runtime or by interop. I was unable to find some information about this.

Does anybody have an idea or some information to solve this problem via c#?

Upvotes: 1

Views: 824

Answers (1)

Richard Deeming
Richard Deeming

Reputation: 31228

DirectoryServices seems to do the trick for me. Create a DirectoryEntry pointing to the dynamic distribution list (schema class name = "msExchDynamicDistributionList"), and then use the "msExchDynamicDLBaseDN" and "msExchDynamicDLFilter" properties to search for the members:

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

Remember that the members of the group could be regular groups or other dynamic distribution groups as well as users, contacts and public folders.

Upvotes: 1

Related Questions