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

Связанный контент