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属性,看看你要找的属性是否出现。