На платформе Windows есть ли утилита командной строки, которую я могу передать username
, password
domain name
для проверки учетных данных (или, возможно, выдачи ошибки о том, что учетная запись отключена, не существует или срок ее действия истек)?
Вы можете использовать net use
команда, указав имя пользователя и пароль в командной строке (в форме net use \\unc\path /user:username password
и проверьте errorlevel
возвращается, чтобы проверить действительность учетных данных.
В runas
команда тоже будет работать, за исключением того, что вам будет труднее тестировать вывод.
Проверка учетных данных на наличие учетной записи будет связана с использованием net user
или dsquery
. В net user
команда не сообщит вам, заблокирована ли учетная запись, но запросит lockoutTime
Атрибут учетной записи пользователя может сказать вам об этом.
В Powershell:
Function Test-ADAuthentication {
param($username,$password)
(new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
}
PS C:\> Test-ADAuthentication "dom\myusername" "mypassword"
True
PS C:\>
Попробуй это:
net use \\%userdnsdomain% /user:%userdomain%\%username% *
% Errorlevel% равен 0, если пароль в порядке.
Звездочка в конце предложения заставляет запрашивать пароль.
Просто хотел добавить, что, поскольку AD является сервером LDAP, вы можете использовать инструмент командной строки LDAP для «привязки» к нему, тем самым подтверждая, активен он или нет. Вы также можете выполнить привязку как пользователь с более высокими привилегиями, а затем выполнить поиск в AD, используя принципы LDAP.
Но эй - с Powershell все в порядке!