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 可以保留先前的密碼記錄,但它們不會暴露給外部存取。

相關內容