zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    解决 搭建Jekins过程中 启动Tomcat的java.net.UnknownHostException异常
    射手和农场主
    java 和 JS(javaScript)中的反斜杠正则转义
    分享修改密码的SharePoint Web part: ITaCS Change Password web part
    分享微软官方Demo用的SharePoint 2010, Exchange 2010, Lync 2010虚拟机
    Office 365 的公共网站的一些限制及解决的办法
    SharePoint 2013 关闭 customErrors
    安装 KB2844286 导致SharePoint 2010 XSLT web part 显示出现错误
    安装Office Web Apps Server 2013 – KB2592525安装失败
    如何将hyper-v虚拟机转换成vmware的虚拟机- 转换SharePoint 2010 Information Worker Demonstration and Evaluation Virtual Machine (SP1)
  • 原文地址:https://www.cnblogs.com/mahongbiao/p/3762377.html
Copyright © 2011-2022 走看看