组调用(“删除”)和属性[“成员”]之间的DirectoryServices.DirectoryEntry区别。删除

时间:2017-09-18 12:23:09

标签: c# .net active-directory directoryservices directoryentry

使用DirectoryServices.DirectoryEntry class我试图使用C#.NET从活动目录中的组中删除用户条目

我遇到过两种方式,

第一种方式:

DirectoryEntry directoryEntry = new DirectoryEntry(myGroupPath);
directoryEntry.Properties["member"].Remove(userDistinguishedName);
directoryEntry.CommitChanges();

第二种方式

DirectoryEntry directoryEntry = new DirectoryEntry(myGroupPath);
directoryEntry.Invoke("Remove", userDistinguishedName);

根据msdn Invoke documentation,它表示Invoke在本机Active Directory域服务对象上调用方法。 它与第一种方式有什么不同?

1 个答案:

答案 0 :(得分:0)

我做了我的研究,这就是我所达到的目标。

让我们从 第二种方式开始

DirectoryEntry.Invoke(methodName,ADsPath)

正如msdn Invoke documentation提供的那样,Invoke在本机Active Directory域服务对象上调用方法。在我们的案例中,我们重新调用组成员身份接口 IADsGroup

基本上,IADsGroup

  1. 管理目录服务中的组成员资格数据。它使您能够获取成员对象,测试给定对象是否属于该组,以及向该组或组中添加或删除对象。

  2. 是一个实现IAD和接口的接口。 IDispatch接口。

    a)IADs:提供ADSI对象的基本维护功能。

    • 是一个接口,用于定义ADSI对象的基本对象功能,即属性和方法。例如。 “获取”是一种通过名称获取属性值的方法。 “Class”是一个获取对象架构类名称的属性。
    • 将对象的属性加载到属性缓存中。例如。在调用Invoke(“Remove”)时,首先,它将成员属性加载到缓存中。
    • 访问并修改属性缓存中对象的属性值。
    • 提交对持久性目录存储的更改。

    b)IDispatch:用于启用自动化客户端(如Visual Basic)访问的接口。这将对象,方法和属性公开给编程工具和支持自动化的其他应用程序。

  3. 3。     它提供了管理和扩展directory schema的方法。

    ADSI定义的接口可以支持您的提供商的特定属性和语法。但是,提供程序可以选择扩展ADSI接口定义并支持其他属性。

    因此,如果您在AD上使用众所周知的常见操作,ADSI界面可以省去管理property cache和忘记commit changes这可能是个问题的麻烦

    <强> DirectoryEntry.Properties [“构件”]。删除

    基本上拨打ADSI interface to retrieve the value of the property。 IADsGroup对你来说完全一样。