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

dth*_*ree 8 powershell active-directory

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

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

Test-ADAuthentication "test" "Password1"
Run Code Online (Sandbox Code Playgroud)

但是,我终生无法弄清楚如何:

  1. 检查密码是否需要重置,同时
  2. 验证发送的凭据确实适用于他们的最后一个密码。

这怎么可能呢?

小智 8

可以通过运行进程来测试凭证。下面举个例子,

Start-Process -FilePath cmd.exe /c -Credential (Get-Credential -UserName $username -Message 'Test Credential')
Run Code Online (Sandbox Code Playgroud)

或者干脆:

Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
Run Code Online (Sandbox Code Playgroud)

系统会提示您输入密码。如果您需要从字符串中读取密码(不好的做法),则需要事先初始化凭证对象。可以在帮助中找到有关该方法的更多详细信息。

Get-Help Get-Credential
Run Code Online (Sandbox Code Playgroud)