没有第二个账号查询AD,如何检测AD用户密码是不是过期?

Posted

技术标签:

【中文标题】没有第二个账号查询AD,如何检测AD用户密码是不是过期?【英文标题】:How can I detect whether AD user password is expired without a second account to query AD?没有第二个账号查询AD,如何检测AD用户密码是否过期? 【发布时间】:2015-05-30 15:28:57 【问题描述】:

我创建了一个 (PowerShell) 向导来指导用户完成将其计算机(远程)加入域的过程。 该脚本在(标准)本地管理员的登录下运行,并使用相关用户的凭据查询 AD 并加入计算机(添加计算机)。 用户拥有一个或多个特定 AD 计算机帐户的明确权限,可以将该计算机加入域(他不是域管理员)。

一切正常,但对于新员工,密码设置为“用户下次登录时必须更改密码”。 每当我使用密码过期的用户凭据查询 AD 中的某些内容时,我总是会收到一般错误:“未知用户名或密码错误。”

如何从帐户本身(不使用任何其他帐户)确定密码已过期,以便提示更改密码?

这可能吗? (Windows 操作系统在登录时如何做到这一点?)

此问题与How can I query users with an expired password in Active Directory? 不同,因为在这种情况下,您有另一个帐户可用于查询 AD。

【问题讨论】:

参考***.com/questions/299490/… 【参考方案1】:

找到了,但此时无法测试 Get-ADUser $env:UserName -properties PasswordExpired, PasswordNeverExpires, PasswordLastSet

编辑:正如您所提到的,您无法查询 AD,因为您在不属于 AD 的本地管理员帐户下运行,并且您没有 AD 帐户来查询您正在测试的帐户的密码过期。

这似乎是设计使然,对于新员工,您需要设计一种方法让密码在一段时间后过期,而不是在首次登录时过期。

【讨论】:

文森特,这正是我要找的。如上所述,向导在本地管理员帐户下运行,$env:UserName 无法登录,因为计算机尚未加入并且他的密码已过期。如果您执行Get-ADUser "User001" -Credential $User001Credential -properties PasswordExpired, PasswordNeverExpires, PasswordLastSet 之类的操作,您会得到 Get-ADUser : 目标名称不正确或服务器已拒绝客户端凭据。 当用户自己的密码设置为 “用户必须在下次登录时更改密码” 我明白了,我猜当您使用 Get-Credential cmdlet 获取 $user001Credential 时,弹出窗口也不会查询 AD 来验证凭据(并通知到期)? 不,据我所知,Get-Credential 根本不访问 AD。 不确定您是否已经解决了这个问题,但是这个 SO 问题不会解决您的问题吗? ***.com/questions/10802850/… 我想这是出于安全原因而设计的(有点道理,如果您无权访问 AD,您应该无法检索信息,例如您正在尝试的帐户打破实际存在)

以上是关于没有第二个账号查询AD,如何检测AD用户密码是不是过期?的主要内容,如果未能解决你的问题,请参考以下文章

群晖AD域用户名密码

ad20安装需要账号密码

netcore如何获取ad帐号

苹果手机ad帐号和密码忘了怎么办?

AD域用户安装软件

ZabbixZabbix对接AD域