2012-04-02 62 views
1

我想獲得DirectoryEntry對象,域用戶組。我正在關注this link以從某個羣組中移除用戶。如何爲特定組創建DirectoryEntry

strGroup = "CN=TestGroup,OU=TestOU";  
objGroup = objADAM.Children.Find(strGroup, "group"); 

此代碼來自MSDN示例。如果我在Active Directory用戶和計算機小程序(即CN和OU)中找到我的組?

編輯: 爲了更一般,我在哪裏可以找到Find方法的名字?

從MSDN:


類型:System
孩子目錄對象要搜索的名稱。

這是專有名稱還是其他?

+0

看一看我的[海狸ADSI瀏覽器](代碼http://adsi.mvps.org/adsi/CSharp /beavertail.html) - 它顯示了AD層次結構以及LDAP路徑的所有相關信息。 – 2012-04-02 12:12:35

+0

'strGroup'是否是專有名稱?像CN = Domain-Users,CN = Users,DC = test1'? – Tschareck 2012-04-02 12:31:30

+0

「名稱」實際上應該是其容器內對象的「本地」名稱。所以它可能是'OU = TestOU'容器內的CN = TestGroup'或其他東西。它只是您要查找的對象的本地名稱 - 只是本地名稱,*不是*整個長LDAP路徑.... – 2012-04-02 13:38:22

回答

1

您正在混合兩個分享大量重疊的獨立環境。 DirectoryEntry是DirectoryServices包的一部分,GetObject是一個與ActiveDs.dll接口的VBA工具。

如果這需要視覺基本腳本,那麼您具有來自GetObject()或Find()方法的DirectoryEntry的等價物。如果您需要訪問屬性,請使用object.Get(「property_name」)方法(返回多值屬性的數組)

如果您可以將開發平臺交換爲.NET,您將可以訪問所有DirectoryServices想。

編輯:如果這是一個C#.NET應用程序,這裏的使用

private static DirectoryEntry getGroupDE(String group) 
{ 
    String adserver = "dc.companyname.com"; 
    String searchroot = "ou=Groups,dc=companyname,dc=com"; 
    DirectorySearcher ds = new DirectorySearcher(); 
    ds.SearchRoot = new DirectoryEntry(String.Format("LDAP://{0}/{1}",adserver,searchroot)); 
    ds.SearchScope = SearchScope.Subtree; 
    ds.Filter = String.Format("(&(objectCategory=group)(sAMAccountName={0}))",group); 
    SearchResult sr = ds.FindOne(); 
    if (sr == null) 
    { 
     return null; 
    } 
    return sr.GetDirectoryEntry(); 
} 
+0

不,這是C#中.NET應用程序的一部分。 – Tschareck 2012-04-03 06:49:25

+0

如果這是.NET和C#我會使用DirectorySearcher。讓我爲你添加一些代碼到上面的帖子。 – Kodra 2012-04-04 14:39:43