• C#获取AD域中计算机和用户的信息


    如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息。

    所用程序集,需要.Net Framework 4。

    添加程序集引用 System.DirectoryServices.AccountManagement

    获取AD域名称,未加入AD域的,只能获取计算机名称。

    如果未加入任何域,则后续的获取域用户、计算机等操作将无法进行,实例化域上下文对象时,会抛出异常。

    1 IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
    2 string hostName = ipGlobalProperties.HostName;
    3 string domainName = ipGlobalProperties.DomainName;

    获取指定域中的用户的查找对象。

    1 PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName);
    2 UserPrincipal userPrincipal = new UserPrincipal(principalContext);
    3 PrincipalSearcher principalSearcher = new PrincipalSearcher(userPrincipal);

    查找域中用户及其信息。

     1 StringBuilder sb = new StringBuilder(); 
     2 foreach (UserPrincipal userPrincipalSearchResult in principalSearcher.FindAll())
     3 {
     4     sb.AppendLine(string.Format("UPN:{0}", userPrincipalSearchResult.UserPrincipalName));
     5     sb.AppendLine(string.Format("姓氏Last Name:{0}", userPrincipalSearchResult.Surname));
     6     sb.AppendLine(string.Format("中间名:{0}", userPrincipalSearchResult.MiddleName));
     7     sb.AppendLine(string.Format("Given Name/First Name名:{0}", userPrincipalSearchResult.GivenName));
     8     sb.AppendLine(string.Format("名称:{0}", userPrincipalSearchResult.Name));
     9     sb.AppendLine(string.Format("上次登录时间:{0}", userPrincipalSearchResult.LastLogon));
    10 }
    11 userPrincipal.Dispose();
    12 Console.WriteLine(sb.ToString());

    查找域中计算机及其信息,类似于查找用户。首先使用域上下文对象实例化一个计算机对象,然后使用该对象实例化一个查找对象。

    查找的结果,即为计算机对象,循环获取信息即可。

     1 ComputerPrincipal computerPrincipal = new ComputerPrincipal(principalContext);
     2 principalSearcher = new PrincipalSearcher(computerPrincipal);
     3 // 
     4 foreach (ComputerPrincipal computerPrincipalSearchResult in principalSearcher.FindAll())
     5 {
     6     sb.AppendLine(string.Format("UPN:{0}", computerPrincipalSearchResult.UserPrincipalName));
     7     sb.AppendLine(string.Format("描述:{0}", computerPrincipalSearchResult.Description));
     8     sb.AppendLine(string.Format("是否启用:{0}", computerPrincipalSearchResult.Enabled));
     9     sb.AppendLine(string.Format("SAM账号名:{0}", computerPrincipalSearchResult.SamAccountName));
    10     sb.AppendLine(string.Format("名称:{0}", computerPrincipalSearchResult.Name));
    11     sb.AppendLine(string.Format("上次登录时间:{0}", computerPrincipalSearchResult.LastLogon));
    12 }
    13 computerPrincipal.Dispose();
    14 Console.WriteLine(sb.ToString());

    参考链接:http://www.codeproject.com/Articles/489348/Active-Directory-Users-and-Computers

  • 相关阅读:
    18 | 案例篇:内存泄漏了,我该如何定位和处理?
    17 | 案例篇:如何利用系统缓存优化程序的运行效率?
    16 | 基础篇:怎么理解内存中的Buffer和Cache?
    Scrapyd 改进第一步: Web Interface 添加 charset=UTF-8, 避免查看 log 出现中文乱码
    scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis
    lxml.etree.HTML(text) 解析HTML文档
    CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点
    scrapy_redis 相关: 查看保存的数据
    scrapy 通过FormRequest模拟登录再继续
    python2 python3 转换,兼容
  • 原文地址:https://www.cnblogs.com/mahongbiao/p/3762377.html
Copyright © 2020-2023  润新知