通过C#.net中的EmployeeID ActiveDirectory获取Windows sAMAccountName

通过C#.net中的EmployeeID ActiveDirectory获取Windows sAMAccountName,c#,active-directory,C#,Active Directory,我需要通过将EmployeeId传递到active directory来获取sAMAccountName 请帮帮我 我不知道您的员工ID是什么,但下面是如何访问所有用户并显示一些字段: Domain domain = Domain.GetCurrentDomain(); var searchRoot = domain.GetDirectoryEntry(); DirectorySearcher search = new DirectorySearcher(searchRoot); search

我需要通过将EmployeeId传递到active directory来获取sAMAccountName


请帮帮我

我不知道您的员工ID是什么,但下面是如何访问所有用户并显示一些字段:

Domain domain = Domain.GetCurrentDomain();
var searchRoot = domain.GetDirectoryEntry();

DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
search.PropertiesToLoad.Add("sAMAccountName");
search.PropertiesToLoad.Add("userPrincipalName");
search.PropertiesToLoad.Add("displayName");

SearchResultCollection results = search.FindAll();
if (results != null)
{
    foreach(SearchResult result in results)
    {
        Console.WriteLine("{0} ({1}) sAMAccountName={2}",
            result.Properties["displayName"].OfType<object>().FirstOrDefault(),
            result.Properties["userPrincipalName"].OfType<object>().FirstOrDefault(),
            result.Properties["sAMAccountName"].OfType<object>().FirstOrDefault());
    }
}
Domain-Domain=Domain.GetCurrentDomain();
var searchRoot=domain.GetDirectoryEntry();
DirectorySearcher search=新的DirectorySearcher(searchRoot);
search.Filter=“(&(objectClass=user)(objectCategory=person))”;
search.PropertiesToLoad.Add(“sAMAccountName”);
search.PropertiesToLoad.Add(“userPrincipalName”);
search.PropertiesToLoad.Add(“displayName”);
SearchResultCollection results=search.FindAll();
如果(结果!=null)
{
foreach(搜索结果中的搜索结果)
{
Console.WriteLine(“{0}({1})sAMAccountName={2}”,
type()的result.Properties[“displayName”]。FirstOrDefault(),
type()的result.Properties[“userPrincipalName”]。FirstOrDefault(),
type()的result.Properties[“sAMAccountName”]。FirstOrDefault();
}
}
要发现架构中存在的所有字段,您可以使用。

试试这个(非常感谢VirtualBlackBox)

string employeeId=“someEmployeeId”;
Domain Domain=Domain.GetCurrentDomain();
var searchRoot=domain.GetDirectoryEntry();
DirectorySearcher search=新的DirectorySearcher(searchRoot);
search.PropertiesToLoad.Add(“EmployeeID”);
search.PropertiesToLoad.Add(“sAMAccountName”);
search.Filter=String.Format(&(objectCategory=person)(EmployeeID={0})),EmployeeID);
SearchResult SearchResult=search.FindOne();
if(searchResult!=null)
{
对象o=searchResult.Properties[“sAMAccountName”]。of type().FirstOrDefault();
如果(o!=null)
{
字符串sAMAccountName=o.ToString();
}
}

你可以从阅读开始,非常感谢,你救了我一天。EmployeeID是Active Directory中的属性,很遗憾,它没有加载到DirectoryEntry中。我试图通过DirectorySearcher加载它,但它总是抛出域不支持搜索的错误。你的代码对我很有用。
        string employeeId ="someEmployeeId";
        Domain domain = Domain.GetCurrentDomain();
        var searchRoot = domain.GetDirectoryEntry();
        DirectorySearcher search = new DirectorySearcher(searchRoot);
        search.PropertiesToLoad.Add("EmployeeID");
        search.PropertiesToLoad.Add("sAMAccountName");
        search.Filter = String.Format("(&(objectCategory=person)(EmployeeID={0}))", employeeId );
        SearchResult searchResult =search.FindOne();
        if (searchResult != null)
        {
            object o = searchResult.Properties["sAMAccountName"].OfType<object>().FirstOrDefault();
            if (o != null)
            {
                string sAMAccountName= o.ToString();
            }
        }