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();
}