
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
2 番目の質問については、私が正しく理解していれば、現在入力されているパスワードが以前に使用されたものと同じかどうかを確認したいということですね。
私の知る限り、これは不可能です。特定のポリシーでは、AD は以前のパスワードの記録を保持できますが、外部アクセスには公開されません。