【问题标题】:sAMAccountName is missing from Lightweight Directory Services instance轻量级目录服务实例中缺少 sAMAccountName
【发布时间】:2015-02-05 16:41:27
【问题描述】:

我正在尝试以编程方式将用户添加到 AD lDS 实例。以下是我添加用户的方法:

string ldap = "LDAP://xxxx";

var root = new DirectoryEntry(ldap);
var cn = "CN=" + "Joe" + "Blow";
var u = root.Children.Add(cn, "user");
//u.Properties["sAMAccountName"].Value = "jblow";
u.Properties["employeeID"].Value = "654321";
u.Properties["sn"].Value = "Blow";
u.Properties["givenName"].Value = "Joe";
u.Properties["comment"].Value = "a note for you";
u.Properties["homePhone"].Value = "55555555";
u.CommitChanges();

如果我执行此代码,它将成功添加用户Joe Blow。但是,如果我尝试添加用户名 sAMAccountName,则会收到错误消息:

指定的目录服务属性或值不存在。System.Exception {System.DirectoryServices.DirectoryServicesCOMException}

使用ADSI Edit 我查看了对象的属性,但我没有看到sAMAccountName 在那里列出!

如何将用户名添加到AD LDS 实例?

【问题讨论】:

  • Readers:此脚本快速将 sAMAccountName 属性添加到架构中。我已经使用它并且它可以工作,但是将脚本保存为 unicode(请参阅 cmets),并且您可能还需要在运行时在“#configurationNamingContext”参数周围添加引号(请参阅文件中的说明)。脚本链接:gist.github.com/Nora-Ballard/9124822

标签: c# console-application adlds


【解决方案1】:

这应该提供更多信息:INFO

我们通常会保持 sAMAccountName 和 userPrincipalName UPN 同步,但这可能会因您的情况/组织而异。

你可以试试这个:

u.Properties["sAMAccountName"].Add("jblow"); u.Properties["userPrincipalName"].Add("jblow"+ "@" + yourDomain );

【讨论】:

  • 我有并且它有效。根据我的阅读userPrincipalName 的格式为username@domain.com。这可以用作用户名吗?
  • 虽然此代码示例可能会回答这个问题,但最好在您的回答中包含一些基本解释。就目前而言,这个答案对未来的读者几乎没有价值。
  • 默认情况下,AD LDS 架构中缺少 samAccountName。但是,userPrincipalName 也可以用作用户名来进行身份验证。
【解决方案2】:

在此处查找问题的解释: http://blog.joeware.net/2011/03/04/2214/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多