PutEx如何运作?

时间:2017-08-18 12:36:48

标签: vba vbscript

我必须将一些代码从VB转换为C#,并且不能完全掌握PutEx的工作原理,尽管我已阅读过MSDN doc。在我的情况下,我有以下内容:

Set ObjUser = GetObject("LDAP://" + myPathVariable)
ObjUser.PutEx 1, "Company", 0

有人可以向我解释这条线的确切含义吗?

我所理解的是第一个参数是动作(在本例中为ADS_PROPERTY_CLEAR),第二个参数是属性名称,第三个是属性值。那么这一行会清除ObjUser的任何数据,然后附加这些值吗?

如果是这种情况,为什么我们不会使用Put呢?

1 个答案:

答案 0 :(得分:3)

IADs::Put()可以设置一个值,但它无法清除值,这意味着您可以使用该方法设置不同的值,但不能完全删除值(即将属性设置为NULL)。对于后者,您必须使用IADs::PutEx()

来自Scripting Guy blog的详细解释:

  

接下来,我们使用这两行代码完全删除Ken Myer的电话号码:

objUser.PutEx ADS_PROPERTY_CLEAR, "telephoneNumber", 0
objUser.SetInfo
     

如您所见,我们调用PutEx方法并将其传递给三个参数:1)常量 ADS_PROPERTY_CLEAR ,它再次表示我们要执行的操作; 2) telephoneNumber ,我们要清除的属性; 3) 0 ,每次清除属性时都需要参数。然后,我们调用SetInfo方法将更改写回Active Directory。如果您重新运行检索具有电话号码的用户列表的脚本,则Ken Myer将不再显示在列表中。那是因为他不再有电话号码,甚至没有一个空字符串。