2010-03-11 50 views
0

我無法檢索活動目錄中某個組的成員。我正在使用的代碼如下:列出活動目錄組的所有成員

[Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName = "fillRow")] 
public static IEnumerable getNTGroupMembers(string groupName) 
    { 
     SearchResult result; 
     DirectorySearcher search = new DirectorySearcher(); 
     search.Filter = String.Format("(cn={0})", groupName); 
     search.PropertiesToLoad.Add("member"); 
     result = search.FindOne(); 

     ArrayList userNames = new ArrayList(); 
     if (result != null) 
     { 
      for (int counter = 0; counter < result.Properties["member"].Count; counter++) 
      { 
       object user = (object)result.Properties["member"][counter]; 
       userNames.Add(user); 
      } 
     } 
     return userNames; 
    } 

但它返回我下面的列表:

CN = X,OU = X,OU = X,OU = X,OU = X,DC = X,DC = X,DC = X

有沒有人知道我如何返回成員的用戶名。我嘗試過獲得不同的屬性,但是我一直無法得到這個工作。

這是我創建的SQL Server 2005

回答

0

嗯,我設法做一個CLR函數的一部分。它仍然存在一些問題,出於某種原因某些AD組不返回某些成員。
如果有人知道更好的方法來做到這一點,請告訴我!

[Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName = "fillRow")] 
public static IEnumerable getNTGroupMembers(string groupName) 
{ 
    SearchResult result; 
    DirectorySearcher search = new DirectorySearcher(); 
    search.Filter = String.Format("(cn={0})", groupName); 
    search.PropertiesToLoad.Add("member"); 
    result = search.FindOne(); 
    ArrayList userNames = new ArrayList(); 
    if (result != null) 
    { 
     for (int counter = 0; counter < result.Properties["member"].Count; counter++) 
     { 
      string st = (string) result.Properties["member"][counter]; 
      DirectoryEntry gpMemberEntry = new DirectoryEntry(("LDAP://" + st)); 
      if (!(gpMemberEntry == null)) 
      { 
       PropertyCollection userProps = gpMemberEntry.Properties; 
       object objUser = userProps["sAMAccountname"].Value; 
       userNames.Add(objUser); 
      } 
     } 
    } 
    return userNames; 
} 
private static void fillRow(Object obj, out string user) 
{ 
    object row = (object)obj; 
    user = (string)row; 
} 
+0

有沒有辦法修改上述解決方案來獲取所有用戶,包括那些屬於該組成員但位於單獨域中的用戶?我有一個組返回與我查詢的組相關的用戶列表。但是,當我取回用戶的ArrayList時,與該組不屬於同一個域的所有用戶在sAMAccountname對象的Value屬性中都有一個Null值。 – RLH 2011-07-08 15:13:35