Powershell - 在 AD 中测试用户凭据,并重置密码

Powershell - 在 AD 中测试用户凭据,并重置密码

我可以成功使用 Powershell 来判断用户是否在 Active Directory 中进行了身份验证:

Function Test-ADAuthentication {
    param($username,$password)
    (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
}

Test-ADAuthentication "test" "Password1"

然而,我无论如何也想不出如何:

  1. 检查是否需要重置密码,同时
  2. 验证发送的凭证确实对他们的上一个密码有效。

该怎么办呢?

答案1

可以通过运行进程来测试凭证。以下是示例:

Start-Process -FilePath cmd.exe /c -Credential (Get-Credential -UserName $username -Message 'Test Credential')

或者简单来说:

Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)

您将看到一个输入密码的提示。如果您需要从字符串中读取密码(不好的做法),则需要事先初始化凭证对象。有关该方法的更多详细信息,请参阅帮助。

Get-Help Get-Credential

答案2

以下是获取特定用户密码过期前剩余天数的一种方法:

(([datetime]::FromFileTime((Get-ADUser user -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")) - (Get-Date)).TotalDays

如果数字为 0 或负数,则密码已过期。

此命令将检查用户帐户是否被锁定:

(Get-ADUser user -Properties LockedOut).LockedOut

至于第二个问题 - 如果我理解正确的话,您想查看他们当前输入的密码是否与之前使用的密码相同。

据我所知,这是不可能的 - 通过某些策略,AD 可以保留以前的密码记录,但这些密码不会暴露给外部访问。

相关内容