首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Active Directory/C#:使用多个OU获取单个域中的用户?

Active Directory是一种由微软开发的目录服务,用于管理网络中的用户、计算机和其他网络资源。C#是一种通用的面向对象编程语言,常用于开发Windows应用程序和Web应用程序。

要使用多个组织单位(OU)获取单个域中的用户,可以使用Active Directory的System.DirectoryServices命名空间提供的类和方法来实现。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.DirectoryServices;

class Program
{
    static void Main()
    {
        string domainPath = "LDAP://yourdomain.com";
        string ouPath1 = "OU=OU1,DC=yourdomain,DC=com";
        string ouPath2 = "OU=OU2,DC=yourdomain,DC=com";

        using (DirectoryEntry domainEntry = new DirectoryEntry(domainPath))
        {
            using (DirectorySearcher searcher = new DirectorySearcher(domainEntry))
            {
                searcher.Filter = "(&(objectClass=user)(objectCategory=person))";
                searcher.SearchScope = SearchScope.Subtree;

                searcher.SearchRoot = new DirectoryEntry(domainPath + "/" + ouPath1);
                SearchResultCollection results1 = searcher.FindAll();

                searcher.SearchRoot = new DirectoryEntry(domainPath + "/" + ouPath2);
                SearchResultCollection results2 = searcher.FindAll();

                // 处理结果
                foreach (SearchResult result in results1)
                {
                    // 处理OU1中的用户
                    Console.WriteLine(result.Properties["samaccountname"][0].ToString());
                }

                foreach (SearchResult result in results2)
                {
                    // 处理OU2中的用户
                    Console.WriteLine(result.Properties["samaccountname"][0].ToString());
                }
            }
        }
    }
}

上述代码中,domainPath是域的LDAP路径,ouPath1ouPath2是要获取用户的OU的路径。通过创建DirectoryEntry对象和DirectorySearcher对象,可以设置搜索过滤器和搜索范围。然后,通过设置SearchRoot属性为不同的OU路径,可以在不同的OU中搜索用户。最后,通过遍历SearchResultCollection对象,可以处理搜索结果。

这是一个基本的示例,具体的实现可能会根据实际需求和环境而有所不同。在腾讯云的产品中,可以使用腾讯云的云服务器(CVM)和腾讯云的云数据库(TencentDB)来支持Active Directory的部署和管理。具体的产品介绍和链接地址可以参考腾讯云的官方文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Microsoft 本地管理员密码解决方案 (LAPS)

问题 企业环境中计算机上本地帐户的真正问题是“本地”一词用词不当。如果网络上的 50 台计算机的本地管理员帐户为“Administrator”,密码为“P@55w0rd1!”,首先这是一个可怕的密码。其次,更重要的是,如果其中一台计算机受到威胁,它们都将受到威胁。Windows 非常有帮助。非常有用,如果您将本地管理员凭据传递给具有相同本地凭据的另一台计算机,则授予访问权限,就像您使用目标系统凭据登录一样。将管理员凭据转储到一个以获取所有管理员!缓解此问题的最佳方法是确保每台计算机都有一个不同的本地管理员帐户密码,该密码长、复杂且随机,并且会定期更改。

01

AD域导入导出用户

作为域管理员,有时我们需要批量地向AD域中添加用户帐户,这些用户帐户既有一些相同的属性,又有一些不同属性。如果在图形界面逐个添加、设置,那么需要的时间和人力会超出能够承受范围。一般来说,如果不超过10个,我们可利用AD用户帐户复制来实现。如果再多的话,就应该考虑使用使用命令行工具,实现批量导入导出对象。微软默认提供了两个批量导入导出工具,分别是CSVDE(CSV目录交换)和LDIFDE(LDAP数据互换格式目录交换)。   具体选择上述哪个工具取决于需要完成的任务。如果需要创建对象,那么既可以使用CSVDE,也可以使用LDIFDE,如果需要修改或删除对象,则必须使用LDIFDE。本文不涉及使用CSVDE导入对象。而是换另一种导入导出AD帐户思路:使用CSVDE工具导出AD帐户到CSV格式的文件中,再使用For语句读取该文件,使用DSADD命令进行批量添加。   具体步骤:   一:使用CSVDE导出帐户   使用 CSVDE 导出现有对象的列表相当简单。   最简单的用法是:    csvde –f ad.csv  将 Active Directory 对象导出到名为 ad.csv 的文件。–f 开关表示后面为输出文件的名称。    但是必须注意,上述的用法是很简单,但是导出来的结果可能存在太多你不希望要的记录和信息。    如果要实现更精确的导出记录,可以使用 -d 和 -r 以及 -l 参数。    其中:-d 用来指定特定的搜索位置和范围          -r 用来指定特定的搜索对象类型          -l 用来指定导出对象的具体属性    如:      csvde –f users.csv –d "ou=Users,dc=contoso,dc=com" –r       "(&(objectcategory=person)(objectclass=user))" –l DN,objectClass,description    注意:如果使用CSVDE导出的帐户信息中存在中文,会存在乱码的可能,可以加-U参数来解决。   二:批量导入帐户    首先需要明确的概念是,要实现批量导入帐户,必须要存在一个已包括多个帐户信息的文件。没有文件,无法实现批量导入。    假设之前已经通过CSVDE工具导出过这样的一个文件Users.csv,且文件内容如下    姓 名   全名   登录名      密码    张,三,  张三,  three.zhang,pass01    李,四,  李四,  four.li,    passo2    王,五,  王五,  five.wang,  pass03    刘,六,  刘六,  six.liu,    passo4    赵,七,  赵七,  seven.zhao, pass05    有了上述格式的文件后,我们就可以使用For命令来读取文件中的每条信息并利用DSADD实现帐号添加。    具体语句如下:    C:\>for /f "tokens=1,2,3,4,5 delims=," %a in (uses.csv) do dsadd user "cn=%c,ou=        newusers,dc=contoso,dc=com" -samid %d -upn %d@contoso.com -fn        %b -ln %a -pwd %e -disabled no    作用:将上述文件中五个帐户添加到contoso.com域,名为newusers的OU中,且默认已启用用户。          其中:-samid为登录名                -upn为UPN登录名                -fn为 名                -ln为 姓                -pwd为 密码    简单解释一下for语句        /f 表示从文件中读取信息        tokens表示每行使用的记号,对应于后面的变量具体的值        delims表示每个字段之间的分隔符

03

AD域中常见属性名词解释

AD域中常见属性名词解释 Active Directory(AD)活动目录 schema对象模型 Organizational Unit(OU)组织单位 Distinguished name(DN)识别名 Canonical Name(CN)正式名称 Domain Controllers(DC)域控制器 displayname显示名称 homephone住宅电话 家庭电话(M) givenname名(F) samaccounttype账号类型 mobile手机 primarygroupid分组ID objectclass对象类 取值person, organizationalPerson, user sn姓(L) displayName 显示名称(S) description 描述(D) physicalDeliveryOfficeName 办公室(C) initials英文缩写(I) telephoneNumber电话号码(T) mail电子邮件(M) wWWHomePage网页(W) otherTelephone电话号码-其它(O) url网页-其它(R) co国家/地区(O) st省/自治区(V) l市/县(C) streetAddress 街道(S) postOfficeBox 邮政信箱(B) postalCode邮政编码(Z) userPrincipalName 用户登录名(U) sAMAccountName 用户登录名(Windows 2000 以前版本)(W) pager寻呼机(P) mobile 移动电话(B) facsimileTelephoneNumber传真(F) ipPhone IP电话(I) info 注释 otherHomePhone 家庭电话-其它(O) otherPager 寻呼机-其它(T) otherMobile移动电话-其它(B) otherFacsimileTelephoneNumber传真-其它(E) otherIpPhone IP电话-其它(R) company 公司(C) department 部门(D) title 职务(J) manager 经理-姓名(N) directReports 直接下属(E)

03
领券