AD Server 通常都有一套很方便的管理工具,所以需要透過撰寫程式去控制 AD 資訊的時機實在不多,但為了避免日後有需,在此特意記錄一下方法。
// 要載入的元件 using System.DirectoryServices; ... // AD資訊 string account = "adminAccount"; string password = "123456"; string domain = "OU=台灣總公司,DC=tim,DC=com,DC=tw"; string QueryString = "LDAP://192.168.192.1/" + domain; // Create DirectoryEntry DirectoryEntry de = new DirectoryEntry(QueryString, account, password); // Create DirectorySearcher DirectorySearcher ds = new DirectorySearcher(de); try { // 查詢條件,如果有需要的話。下面這行是查詢單一帳號的範例。 //ds.Filter = "(SAMAccountName=accountA)"; // 定義需要的 AD 欄位,這裡只取出 displayName 和 SAMAccountName 這兩個欄位。 ds.PropertiesToLoad.Add("displayName"); ds.PropertiesToLoad.Add("SAMAccountName"); // 也就是 Account //ds.PropertiesToLoad.Add("Name"); // full name //ds.PropertiesToLoad.Add("mail"); //ds.PropertiesToLoad.Add("description"); //ds.PropertiesToLoad.Add("phsicalDeliveryOfficeName"); //ds.PropertiesToLoad.Add("userPrincipalName"); //user logon name //ds.PropertiesToLoad.Add("telephoneNumber"); //ds.PropertiesToLoad.Add("givenName"); // first name //找全部的 AD 資訊出來 SearchResultCollection sr = ds.FindAll(); if (sr != null) { // 迴圈列出 AD 資訊 foreach (SearchResult subSr in sr) { if (subSr.Properties["SAMAccountName"].Count != 0 && subSr.Properties["displayName"].Count != 0) { Response.Write("SAMAccountName = " + subSr.Properties["SAMAccountName"][0] + "\r\n"); Response.Write("displayName = " + subSr.Properties["displayName"][0] + "\r\n"); Response.Write("----------------------------\r\n"); } } } else { Response.Write("User not found"); } } catch (Exception ex) { Response.Write(ex.Message); } finally { ds.Dispose(); de.Dispose(); }
此範例最後會印出的資訊如下:
SAMAccountName = accountA
displayName = nameA
----------------------------
SAMAccountName = accountB
displayName = nameB
----------------------------
SAMAccountName = accountC
displayName = nameC
----------------------------
沒有留言:
張貼留言