【问题标题】:How to set password expiration date of Active Directory user如何设置 Active Directory 用户的密码到期日期
【发布时间】:2011-08-10 09:36:28
【问题描述】:

我正在编写一个与 Active Directory 通信的应用程序,我需要测试当 Active Directory 中的用户帐户的密码距离到期日期只有几天时它的行为。

因此我的问题是:如何将特定 Active Directory 用户帐户的密码到期日期设置为“今天 + 2 天”之类的日期(当然,无需更改密码到期策略!)。我正在寻找手动方式或编程解决方案(例如基于 VBScript 或 C#)。

我已经尝试过这两种方法:

  • 使用 ADSIEdit 设置 pwdLastSet。问题:我只能将值更改为 0。其他值被拒绝,错误代码为 0x57(无效参数)。

  • 使用IADsUser::PasswordExpirationDate:问题:设置PasswordExpirationDate 失败,错误代码为0x800A01BD。 (参见下面的代码示例。)

代码示例:

strUserName = "test97"
Set objUser = GetObject("LDAP://CN=" & strUserName & ",CN=Users,DC=mydomain,DC=com")
dtmDate = Now+2
objUser.PasswordExpirationDate = dtmDate 
objUser.SetInfo
MsgBox "Successfully changed password expiration date"

【问题讨论】:

  • @sternr:我已经阅读了 Stack Overflow 的那篇文章。它没有解决我的问题,在我看来,它也没有回答那篇文章中提出的问题。原因:您只能将 pwdLastSet 设置为 0;因此,pwdLastSet 不能用于设置特定的到期日期。

标签: c# vbscript active-directory


【解决方案1】:

这是不可能的。您只能将密码标记为已过期。

【讨论】:

    【解决方案2】:

    PasswordExpirationDate 属性是 readonly

    我可能错了,但我认为您的选择是将密码设置为过期(通过使用pwdLastSet),或者通过更改\缩短maxPwdAge 属性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多