Zapytanie o Active Directory, aby bezpośrednio uzyskać właściwość e-mail o wyróżnionej nazwie?

W tej chwili wykonuję kwerendę w aktywnym katalogu, nasz identyfikator użytkownika bazy danych odpowiada identyfikatorowi użytkownika aktywnego katalogu.

Przekazuję identyfikator użytkownika wraz z domeną i ścieżką, aby uzyskać to, czego potrzebuję. Moim celem jest uzyskanie adresu e-mail menedżera z podanego identyfikatora użytkownika. To, co wracam po otrzymaniu właściwości menedżera, to nazwa wyróżniająca.

Znajdowanie rekordu menedżera użytkownika w Active Directory

Powyższy post jest moim dokładnym problemem, ale jest to stary post i nie ma dalszych opisów, jak postępować dalej, a OP wiedział, co robić dalej z nazwą wyróżniającą. Prawda jest taka, ja nie.

Więc moje pytanie brzmi, jak uzyskać właściwość adresu e-mail z nazwy wyróżniającej, którą do tej pory zapisałem jako łańcuch z prefiksem LDAP: // + „MyDistinguishedName”?

 public string GetManagerEmail(string ActiveDirectoryPath, string ActiveDirectoryDomain, bool email)
    {

        DirectoryEntry entry = new DirectoryEntry(ActiveDirectoryPath);

        try
        {
            DirectorySearcher search = new DirectorySearcher(entry);

            search.Filter = "(SAMAccountName=" + workerID + ")";
            search.PropertiesToLoad.Add("cn");
            search.PropertiesToLoad.Add("givenname");  //firstname
            search.PropertiesToLoad.Add("sn");//surname
            search.PropertiesToLoad.Add("manager");
            search.PropertiesToLoad.Add("email");
            SearchResult result = search.FindOne();

            if (null == result)
            {
                return workerID;
            }
            if (email)
            {
                return (string)result.Properties["email"][0];
            }
            else
            {
                return (string)result.Properties["manager"][0];
                //return (string)result.Properties["manager"].IndexOf[];
            }
        }
        catch (Exception ex)
        {
            throw new Exception("Error. " + ex.Message);

        }
        finally
        {
            entry.Close();
        }
    }

Powyżej jest metoda, której używam, aby uzyskać potrzebne dane. Wszelkie dane wejściowe lub ulepszenia będą mile widziane.

Dzięki

TO JEST MOJE ROZWIĄZANIE DLA OSÓB, KTÓRE MOGĄ BYĆ ZAINTERESOWANE

            string domainAndUsername = ActiveDirectoryDomain + @"\" + workerID;
        DirectoryEntry manager = new DirectoryEntry(ActiveDirectoryPath);

        try
        {
            if (manager != null)
            {
                // get e-mail of manager 
                if (manager.Properties["mail"] != null && manager.Properties["mail"].Count > 0)
                {
                    string managersEMail = manager.Properties["mail"].Value.ToString();
                    return managersEMail;
                }
            }

            //No email available, use contract manager
            return string.Empty;

        }
        catch (Exception ex)
        {
            throw new Exception("Error. " + ex.Message);

        }
        finally
        {
            manager.Close();
        }

questionAnswers(1)

yourAnswerToTheQuestion