我正在尝试使用.NET中的姓氏(sn)和名字(givenName)来搜索AD中的用户DirectorySearcher.
我可以找到一个基于sAMAccountname此代码的用户:
 DirectorySearcher searcher1 = new DirectorySearcher(entry);
 searcher1.Filter = string.Format("(&(objectCategory=person)(objectClass=user)(SAMAccountname={0}))",aLogin);
 SearchResult results1;
 results1 = searcher1.FindOne();
Run Code Online (Sandbox Code Playgroud)
但是,当我试图做到这一点的givenName和sn:
DirectorySearcher searcher1 = new DirectorySearcher(entry);
searcher1.Filter = string.Format("(&(objectCategory=person)(objectClass=user)(givenname={0})(sn={1})", aName, aSName);
SearchResultCollection results1;
results1 = searcher1.FindAll();
Run Code Online (Sandbox Code Playgroud)
它不起作用; 消息显示"无效过滤器"; 我可以不根据givenName和过滤sn吗?
我怎样才能做到这一点?
我想在C#中找到我的计算机所属的最具体的OU.我有代码可以获得我需要的信息,但它感觉不健壮,需要复杂的解析.还有更好的选择吗?思考?任何帮助表示赞赏!
真的我想要的是命令提示符命令的等效:
dsquery computer -name COMP-HERE
Run Code Online (Sandbox Code Playgroud)
但我需要在C#中使用它,这被证明是有问题的.
DirectorySearcher d = new DirectorySearcher("CN=COMP-HERE");
d.PropertiesToLoad.Add("adspath");
SearchResultCollection results = d.FindAll();
foreach (SearchResult searchResult in results) {
    foreach (string propertyKey in searchResult.Properties.PropertyNames) {
        ResultPropertyValueCollection valueCollection = searchResult.Properties[propertyKey];
        foreach (Object propertyValue in valueCollection) {
            Console.WriteLine(
            "{0}:{1}",
            propertyKey,
            propertyValue.ToString());
        }
    }
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud) 我想使用以下方法搜索AD时可以指定域控制器:
$principalContext  = New-Object 'System.DirectoryServices.AccountManagement.PrincipalContext'([System.DirectoryServices.AccountManagement.ContextType]::Domain, $DomainControllerIpAddress, $Container)
Run Code Online (Sandbox Code Playgroud)
如何使用DirectoryEntry或指定域控制器DirectorySearcher?
powershell active-directory domaincontroller directorysearcher
我不断收到错误无法联系服务器。当我尝试运行我的代码时:
我已经搜索了几个小时,但仍然无法联系服务器。
DirectorySearcher directorySearcher = new DirectorySearcher();
string path = directorySearcher.SearchRoot.Path;
DirectoryEntry directoryEntry = new DirectoryEntry(path);
PrincipalContext pricipalContext = new PrincipalContext(ContextType.Domain, "LDAP://domain.dk/DC=domain,DC=dk");
//GroupPrincipal group = GroupPrincipal.FindByIdentity(pricipalContext, "(CN=" + department + ")");
GroupPrincipal group = GroupPrincipal.FindByIdentity(pricipalContext, "(CN=" + department + ")");
if (group != null)
{
    foreach (Principal principal in group.Members)
    {
        UserPrincipal tu = principal as UserPrincipal;
        DirectoryEntry de = tu.GetUnderlyingObject() as DirectoryEntry;
        var store = de.InvokeGet("physicalDeliveryOfficeName").ToString();
        var storeNumber = de.InvokeGet("description").ToString();
        employees.Add(new AdEmployees() { name = principal.Name, phone …Run Code Online (Sandbox Code Playgroud) c# ldap active-directory windows-authentication directorysearcher