如何使用Net :: LDAP修改布尔LDAP Active Directory属性?

时间:2014-11-06 01:26:14

标签: perl active-directory ldap netldap

我可以成功绑定到AD LDAP,并修改和创建对象。

但是,如果我想更新或设置类型'布尔'的属性,那么我会收到此错误:

  

00000057:LdapErr:DSID-0C090C3E,注释:属性转换操作出错,数据0,v1db1

这是一段负责的Perl代码:

$rv = $ldap->add($dn, attr=> [
    cn => [$u],
    objectClass => [ 'top','person', 'organizationalPerson', 'contact' ],
    displayName => "$u Mailing List",
    mail => $email,
    name => $u,
    mailNickname => $local,
    proxyAddresses => [
        "SMTP:$email",
        "smtp:$local\@$SERVERDOM",
    ],
    givenName => $u,
    targetAddress => "SMTP:$email",
    internetEncoding => 1310720,
    msExchAddressBookFlags => 1,
    msExchModerationFlags => 6,
    msExchProvisioningFlags => 0,
        msExchHideFromAddressList => 'TRUE',
        msExchBypassAudit => 'FALSE',
        msExchMailboxAuditEnable => 'FALSE',

]);

问题是最后三个属性;如果他们被评论出来,那么它是有效的。我尝试使用0和1代替' TRUE'并且' FALSE'但我得到同样的问题。似乎Net::LDAP代码调用Convert::ASN1的{​​{1}}或string类型不正确;它应该使用' boolean',但我看不出如何做到这一点。

1 个答案:

答案 0 :(得分:4)

根据LDAP规范;字符串值为" TRUE"," True"," true"等都是有效的。

未知属性或该用户无法使用的属性会在属性转换操作中出现错误'错误。

查看属性并使用Google搜索显示msExchHideFromAddressList应为msExchHideFromAddressLists< - 注意复数s。