C#獲取AD域中計算機和用戶的信息

若是你的計算機加入了某個AD域,則能夠獲取該域中全部的計算機和用戶的信息。dom

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

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

獲取AD域名稱,未加入AD域的,只能獲取計算機名稱。code

若是未加入任何域,則後續的獲取域用戶、計算機等操做將沒法進行,實例化域上下文對象時,會拋出異常。orm

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);

查找域中用戶及其信息。blog

 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());

查找域中計算機及其信息,相似於查找用戶。首先使用域上下文對象實例化一個計算機對象,而後使用該對象實例化一個查找對象。ip

查找的結果,即爲計算機對象,循環獲取信息便可。ci

 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-Computersstring

相關文章
相關標籤/搜索