gpt4 book ai didi

c# - Active Directory DirectorySearcher 未返回所有可用属性

转载 作者:太空狗 更新时间:2023-10-29 20:37:01 25 4
gpt4 key购买 nike

我正在为我的老板编写一个新程序,它将取代他们目前正在使用的旧 VBS。

因此,该程序假设进入 AD 并收集所有员工的姓名及其电子邮件地址。我的问题是每个用户都分配了大约 60 个属性,但我的程序只拉入 32 个字段,其中一个是 CN,它是我需要的一半。当然,邮件不是要导入的属性之一。我在调试时也注意到,我认为这只是从长岛分支机构而不是从任何地方引入 emlpoyees,我不明白为什么。任何帮助将不胜感激!! =D

using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
using Microsoft.Office.Interop.Excel;
using System.DirectoryServices.ActiveDirectory;


namespace EmailListing
{
class Program
{
static void Main(string[] args)
{


DirectoryEntry adFolderObject = new DirectoryEntry("LDAP://OU=PHF Users,DC=phf,DC=inc");


DirectorySearcher adSearchObject = new DirectorySearcher(adFolderObject);
adSearchObject.SearchScope = SearchScope.Subtree;



adSearchObject.Filter = "(&(ObjectClass=user)(!description=Built-in*))";




foreach (SearchResult adObject in adSearchObject.FindAll())
{
//mail = adObject.Properties["mail"].ToString();

Console.Write(adObject.Properties["cn"][0]);
Console.Write(". ");
//Console.WriteLine(mail);





}

Console.WriteLine();
Console.ReadLine();
}
}
}

最佳答案

您可以使用 PrincipalSearcher 和“query-by-example”主体进行搜索:

// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// define a "query-by-example" principal - here, we search for a UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);

// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
UserPrincipal foundUser = found as UserPrincipal;

if (foundUser != null && !foundUser.Description.StartsWith("Built-In"))
{
string firstName = foundUser.GivenName;
string lastName = foundUser.Surname;
string email = foundUser.EmailAddress;
}
}

如果您还没有-绝对阅读 MSDN 文章 Managing Directory Security Principals in the .NET Framework 3.5它很好地展示了如何充分利用 System.DirectoryServices.AccountManagement 中的新功能。或者查看 MSDN documentation on the System.DirectoryServices.AccountManagement命名空间。

当然,根据您的需要,您可能希望在您创建的“按示例查询”用户主体上指定其他属性:

  • DisplayName(通常:名字 + 空格 + 姓氏)
  • SAM 帐户名 - 您的 Windows/AD 帐户名
  • User Principal Name - 您的“username@yourcompany.com”样式名称

您可以在 UserPrincipal 上指定任何属性,并将它们用作您的 PrincipalSearcher 的“按示例查询”。

关于c# - Active Directory DirectorySearcher 未返回所有可用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com