
Я могу успешно использовать 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 может хранить предыдущие пароли, но они не будут доступны внешним лицам.