使用 VBS 更改 Active Directory 中的密码到期日期

2024-02-01

我正在尝试使用 VBScript 更改 Active Directory 中用户的密码到期日期。我有获取有关用户密码的信息的代码,但我找不到有关如何更改密码的任何信息。任何帮助将不胜感激!

这是我的代码:

Const SEC_IN_DAY = 86400
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

Set objOU = GetObject("LDAP://CN=[username],OU=Users,OU=New York,OU=NA,OU=[domain],DC=[domain],DC=firm")

intCurrentValue = objOU.Get("userAccountControl")

If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then
  wscript.echo "The password does not expire."
Else
  dtmValue = objOU.PasswordLastChanged 
  Wscript.echo "The password was last changed on " & _
  DateValue(dtmValue) & " at " & TimeValue(dtmValue) & VbCrLf & _
  "The difference between when the password was last set" & VbCrLf & _
  "and today is " & int(now - dtmValue) & " days"
  intTimeInterval = int(now - dtmValue)

  Set objDomainNT = GetObject("WinNT://ropesgray")
  intMaxPwdAge = objDomainNT.Get("MaxPasswordAge")
  If intMaxPwdAge < 0 Then
    WScript.Echo "The Maximum Password Age is set to 0 in the " & _
      "domain. Therefore, the password does not expire."
  Else
    intMaxPwdAge = (intMaxPwdAge/SEC_IN_DAY)
    Wscript.echo "The maximum password age is " & intMaxPwdAge & " days"
    If intTimeInterval >= intMaxPwdAge Then
      Wscript.echo "The password has expired."
    Else
      Wscript.echo "The password will expire on " & _
      DateValue(dtmValue + intMaxPwdAge) & " (" & _
      int((dtmValue + intMaxPwdAge) - now) & " days from today" & ")."
    End If
  End If
End If


'strUserPrincipalName = objOU.Get("userPrincipalName")
'strSAMAccountName = objOU.Get("sAMAccountName")
'strMaxPWAge = objOU.Get("manager")

'WScript.Echo strUserPrincipalName
'WScript.Echo strSAMAccountName
'WScript.Echo strMaxPWAge

您可以使用pwdLastSet属性来更改密码过期时间,但可能不是您想要的方式。pwdLastSet是自 1601 年 1 月 1 日中午 12:00 以来 100 纳秒间隔的数量。 根据微软文档 http://msdn.microsoft.com/en-us/library/ms677943%28v=vs.85%29.aspx,该属性仅接受两个值 0 或 -1。

尝试这个 :

  1. Set pwdLastSet为 0,这意味着从未设置过密码。
  2. 然后,设置pwdLastSet为-1,这意味着密码刚刚被设置。所以出现的值pwdLastSet是当前日期/时间。

我以前在 W2K3 中使用过,它仍然可以在 W2H8 R2 上使用。

You can 找到一个工具 http://www.silogix.fr/conversion-dentiers-64-bits-en-dates-relative-ou-absolue.aspx(对不起,法语)允许您根据自 1601 年 1 月 1 日中午 12:00 以来的 100 纳秒间隔创建日期/时间。

当心它延长了密码的持续时间,这不利于安全。

我希望它有帮助。

JP

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VBS 更改 Active Directory 中的密码到期日期 的相关文章

  • 从 VBS 运行同一目录中的批处理文件

    我有一个 VBScript 应该运行 bat 或 vbs 文件 但它不起作用 它出现一个错误 指出无法找到该文件 无论我是否放入文件路径 我认为这并不重要 因为它位于同一目录中 所以我的问题是 如何从 VBScript 中启动 bat 文件
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • 验证 LDAPS 连接的自签名证书

    我想从 Linux Linux 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 客户端到 Windows 2012 服务器建立安全的 ldap 连接 ldaps 以更改活动中的用户密
  • VBScript 从 Shell 获取结果

    Set wshShell WScript CreateObject WSCript shell wshshell run runas 如何获取结果并显示在 MsgBox 中 您将需要使用 WshShell 对象的 Exec 方法而不是 Ru
  • 我应该在密码中支持 Unicode 吗?

    我想允许我的用户使用 Unicode 作为密码 不过我发现很多网站不支持这一点 例如 Gmail Hotmail 所以我想知道是否有一些我忽略的技术或可用性问题 我在想 如果有什么问题的话 那一定是可用性问题 因为默认情况下 NET 接受
  • VBscript“预期语句”错误

    我正在开发一个 vbscript 程序 但出现了 预期语句 错误 我找不到错误 我看过这个错误的一些示例 但它们对我没有帮助 我是 vbscript 新手 这是代码 Sub SetText tx lw Dim t l r a t 1 l L
  • 将 bcrypt 密码哈希从 PHP 迁移到 Python - ValueError:无效的 hashed_pa​​ssword salt

    我有一个 PHP7 应用程序 它可以像这样对用户密码进行哈希处理 hash password hash password PASSWORD BCRYPT 例如 如果我通过test1234为此 我有 2y 10 aazE9OUKZlOQiM6
  • GetRef 来捕获方法?

    我刚刚发现了 VBScript 的 GetRef 函数 它获取对其参数命名的函数的引用 有没有办法以这种方式获取对方法的引用 我有一种预感 VBScript 不提供这样做所需的复杂绑定 但它肯定会很好 No GetRef不支持类方法
  • 打印出按文件名排序的目录中的文件

    我正在尝试打印目录中的文档 按文件名升序排序 我有下面的脚本来打印文档 它可以工作 但它是随机顺序的 有什么方法可以根据名称对 文件 集合进行排序吗 Set the TargetFolder TargetFolder C Temp Hewi
  • VB脚本删除特定子文件夹

    我需要 VBScript 命令提示符来删除具有特定名称的子文件夹 For Eg E 测试 43 5512686 5512698 html abc E 测试 43 5467686 5512699 html abc E 测试 43 558768
  • 如何将 2 数组放入配置(.ini)文件中? [复制]

    这个问题在这里已经有答案了 我有这个简单的 VBScript 基本代码 Dim cars cars Array Volvo Saab BMW Dim fruits fruits Array Apple Orange Banana Dim i
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • 列表分隔符脚本

    如何从命令行更改列表分隔符 通常我必须编辑以下字段 控制面板 更改键盘或其他输入法 其他设置 我想创建一个 VBScript 单击它会自动更改 to 还有另一个可以返回的 一个脚本就足够了 该设置存储在注册表值中HKCU ControlPa
  • Mongoose 模型 update() 与 save()

    有一个关于问题update vs save https stackoverflow com questions 39010045 mongoose update vs save 但它针对的是一些不同的东西 我猜 纯粹相关mongoose S
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • django 密码重置功能中出现 NoReverseMatch 错误

    我正在尝试在 django 中实现密码重置功能 下面是我的代码 urls py urlpatterns patterns url r signup accounts views signup name signup email url r
  • FileSystemObject 中文件集合的顺序

    在 VBScript 中 我想获取按创建日期排序的文件夹中的文件列表 我发现为了做到这一点 我需要使用记录集 对我来说似乎有点过分 或自己对集合进行排序 我认为我可以避免它 并且我希望我的代码更短 由于我是创建文件的人 所以我使用以日期 y
  • PowerShell - 用户必须在下次登录时更改密码

    这就是我所拥有的 到目前为止 除了我需要用户在登录时更改密码的部分之外 一切都运行良好 Import Csv C Users user Desktop newuser csv New ADUser PassThru Set ADAccoun
  • 将 kinit 与 keytab 文件一起使用时会发生什么

    希望对kinit和keytab文件的使用有更多的了解 例如 如果我已经为某个服务生成了一个密钥表文件 该服务通过以下方式注册到活动目录 ktpass mapuser to someuseraccount ktab k mykeytab a
  • 使用 HttpClient 的 .NET Core SPNEGO 身份验证

    我目前正在编写一个简单的基于 NET Core 的客户端 用于通过 WebHCat 与 Hadoop 集群进行交互 并且我正在尝试弄清楚如何使用 SPNEGO 进行身份验证 就像在curl 或 Powershell Core 等中一样 使用

随机推荐