我必须将一些代码从VB转换为C#,并且不能完全掌握PutEx
的工作原理,尽管我已阅读过MSDN doc。在我的情况下,我有以下内容:
Set ObjUser = GetObject("LDAP://" + myPathVariable)
ObjUser.PutEx 1, "Company", 0
有人可以向我解释这条线的确切含义吗?
我所理解的是第一个参数是动作(在本例中为ADS_PROPERTY_CLEAR
),第二个参数是属性名称,第三个是属性值。那么这一行会清除ObjUser
的任何数据,然后附加这些值吗?
如果是这种情况,为什么我们不会使用Put
呢?
答案 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将不再显示在列表中。那是因为他不再有电话号码,甚至没有一个空字符串。