我可以成功绑定(bind)到 AD LDAP,并修改和创建对象。
但是,如果我想更新或设置“ bool ”类型的属性,则会收到以下错误:
00000057: LdapErr: DSID-0C090C3E, comment: Error in attribute conversion operation, data 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
类型为 string
或 int
这是不正确的;它应该使用“ bool ”,但我看不出如何让它做到这一点。
最佳答案
根据 LDAP 规范; “TRUE”、“True”、“true”等字符串值均有效。
未知属性或该用户不可用的属性将引发“属性转换操作错误”错误。
查看属性并在谷歌上搜索显示 msExchHideFromAddressList
应该是 msExchHideFromAddressLists
<- 注意复数 s。
关于perl - 如何使用 Net::LDAP 修改 bool LDAP Active Directory 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26770259/