Microsoft Active Directory 创建计算机对象操作因少数属性的 UndefinedAttributeTypeError 而失败
Microsoft Active Directory create computer object operation failing with UndefinedAttributeTypeError for few attributes
每当我们尝试在 Microsoft Active Directory 中创建 computer
对象时,如下所示:
var ldap = require('ldapjs');
var client = ldap.createClient({
url: 'ldap://<<host>>:389'
});
client.bind('<<Admin DN>>', '<<password>>', function(err) {
if(err){
console.log('error',err);
}else{
console.log('bind is success');
}
});
var newDN = "CN=testcomputeruser,OU=testou,DC=test,DC=com";
var newUser = {
cn: 'newtestComputer334',
objectClass: 'computer',
description: 'This is test implementation hence this is test description.',
//UndefinedAttributeTypeError: 'msDS-RevealedList':'S:12:RevealedList:CN=RevealedList,OU=testou,DC=test,DC=com',
//UndefinedAttributeTypeError 'msDS-isGC':'FALSE',
//UndefinedAttributeTypeError 'msDS-isRODC':'FALSE',
//UndefinedAttributeTypeError 'msDS-SiteName':'TestmsDSSiteName',
//UndefinedAttributeTypeError 'msDS-IsUserCachableAtRodc':'568974',
}
client.add(newDN, newUser,function(err, resp) {
console.log('newDN : ', newDN);
console.log('newUser : ' ,newUser);
if(err){
console.log('error',err);
}else{
console.log('new user is success');
}
})
在提供适当的值后,msDS-RevealedList, msDS-isGC, msDS-isRODC, msDS-SiteName and msDS-IsUserCachableAtRodc
等少数属性失败 UndefinedAttributeTypeError
。
有什么办法可以找出问题所在吗?
这些都是constructed attributes,这意味着AD会在您请求它们时计算这些属性的值。它们不可写。
有时您会在联机文档中看到这一点。例如,documentation for msDS-RevealedList
表示:
The msDS-RevealedList attribute is constructed from the msDS-RevealedUsers attribute
但是有些文档页面并没有告诉您这一点,例如 msDS-isGC
。
确定它是否为构造属性的最简单方法是使用 AD 用户和计算机。确保选择了查看 -> 高级功能。然后导航到一个 OU 并打开您要查看的一种对象(如计算机)的属性。然后转到“属性编辑器”选项卡。使用 'Filter' 按钮并确保取消选择 "Show only" 选项。然后显示或隐藏Constructed属性,看看你要找的属性是否出现。
每当我们尝试在 Microsoft Active Directory 中创建 computer
对象时,如下所示:
var ldap = require('ldapjs');
var client = ldap.createClient({
url: 'ldap://<<host>>:389'
});
client.bind('<<Admin DN>>', '<<password>>', function(err) {
if(err){
console.log('error',err);
}else{
console.log('bind is success');
}
});
var newDN = "CN=testcomputeruser,OU=testou,DC=test,DC=com";
var newUser = {
cn: 'newtestComputer334',
objectClass: 'computer',
description: 'This is test implementation hence this is test description.',
//UndefinedAttributeTypeError: 'msDS-RevealedList':'S:12:RevealedList:CN=RevealedList,OU=testou,DC=test,DC=com',
//UndefinedAttributeTypeError 'msDS-isGC':'FALSE',
//UndefinedAttributeTypeError 'msDS-isRODC':'FALSE',
//UndefinedAttributeTypeError 'msDS-SiteName':'TestmsDSSiteName',
//UndefinedAttributeTypeError 'msDS-IsUserCachableAtRodc':'568974',
}
client.add(newDN, newUser,function(err, resp) {
console.log('newDN : ', newDN);
console.log('newUser : ' ,newUser);
if(err){
console.log('error',err);
}else{
console.log('new user is success');
}
})
在提供适当的值后,msDS-RevealedList, msDS-isGC, msDS-isRODC, msDS-SiteName and msDS-IsUserCachableAtRodc
等少数属性失败 UndefinedAttributeTypeError
。
有什么办法可以找出问题所在吗?
这些都是constructed attributes,这意味着AD会在您请求它们时计算这些属性的值。它们不可写。
有时您会在联机文档中看到这一点。例如,documentation for msDS-RevealedList
表示:
The msDS-RevealedList attribute is constructed from the msDS-RevealedUsers attribute
但是有些文档页面并没有告诉您这一点,例如 msDS-isGC
。
确定它是否为构造属性的最简单方法是使用 AD 用户和计算机。确保选择了查看 -> 高级功能。然后导航到一个 OU 并打开您要查看的一种对象(如计算机)的属性。然后转到“属性编辑器”选项卡。使用 'Filter' 按钮并确保取消选择 "Show only" 选项。然后显示或隐藏Constructed属性,看看你要找的属性是否出现。