
我可以成功使用 Powershell 來判斷使用者是否在 Active Directory 中進行驗證:
Function Test-ADAuthentication {
param($username,$password)
(new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
}
Test-ADAuthentication "test" "Password1"
然而,我一生都無法弄清楚如何:
- 檢查是否需要重設密碼,同時
- 驗證發送的憑證確實對他們的最後一個密碼有效。
怎麼辦呢?
答案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 可以保留先前的密碼記錄,但它們不會暴露給外部存取。