Question

At the moment we've got a SQL Server view that queries AD and returns information about all the Groups.

SELECT  ADsPath, cn, mail, displayname
FROM    OPENQUERY(ADSI, 'SELECT ADsPath, cn,mail,displayname  
                         FROM    ''LDAP://DC=mycompany,DC=co,dc=uk'' 
                         WHERE   objectCategory=''group''    ') AS Rowset_1

Some of the group ADsPath values contain the - character e.g. LDAP://CN=EXCHANGE – CARGO,CN=Users,DC=mycompany,DC=co,DC=uk

I'm now replacing this SQL Server View using C# and DirectoryServices as follows:

public List<AdGroup> GetGroups()
{
    var groupMembers = new List<AdGroup>();
    using (var ds = new DirectorySearcher(_ldap))
    {
        ds.Filter = String.Format("(&(objectCategory=group))");
        ds.PageSize = 5000;

        ds.PropertiesToLoad.Add("ADsPath");
        ds.PropertiesToLoad.Add("cn");
        ds.PropertiesToLoad.Add("mail");
        ds.PropertiesToLoad.Add("displayName");
        using (var results = ds.FindAll())
        {
            foreach (SearchResult sr in results)
            {                        
                string adsPath = string.Empty;
                if (sr.Properties.Contains("ADsPath"))
                    adsPath = sr.Properties["ADsPath"][0].ToString();

                string cn = string.Empty;
                if (sr.Properties.Contains("cn"))
                    cn = sr.Properties["cn"][0].ToString();

                string mail = string.Empty;
                if (sr.Properties.Contains("mail"))
                    mail = sr.Properties["mail"][0].ToString();

                string displayName = string.Empty;
                if (sr.Properties.Contains("displayName"))
                    displayName = sr.Properties["displayName"][0].ToString();

                DirectoryEntry userAccount = new DirectoryEntry(adsPath);
                string objectGUID = userAccount.Guid.ToString();

                groupMembers.Add(new AdGroup(adsPath, objectGUID, cn, mail, displayName));

            }
        }
        return groupMembers;
    }
}

The problem is DirectoryServices returns the - character as –

What do I need to do to make DirectoryServices return the - character as -

Instead of as –

Thank you for your help.

Était-ce utile?

La solution

I was writing the retrieved AD info to a text file so I could check the results. Saving the info in the text file converted all the text into ASCII format, and caused strange characters to be displayed.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top