没有第二个账号查询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用户密码是不是过期?的主要内容,如果未能解决你的问题,请参考以下文章