Проверка учетных данных пользователя AD из скрипта PowerShell

В скриптах PowerShell, в которых у пользователя запрашиваются его имя и пароль, прежде чем приступать к выполнению действий иногда нужно сначала протестировать валидность введенных учетных данных. Если пользователь ввел неверные имя пользователя и пароль, нужно определить это и запросить их еще раз.

Если нужно проверить учетные данные пользователя в текущем домене, воспользуйтесь следующим скриптом PowerShell.

$creds=get-credential
Function Test-ADCredentials {
param($username, $password)
(New-Object DirectoryServices.DirectoryEntry "",$username,$password).psbase.name -ne $null
}
Test-ADCredentials -username $creds.UserName -password $creds.GetNetworkCredential().password

Введите имя доменного пользователя и его пароль в скрипте (можно использовать формат username , domainusername или [email protected] ). Если указаны действительные учетные данные пользователя, скрипт вернет True .

Если скрипт вернул False , возможные причины:

  • Неверное имя пользователя (проверьте, что пользователь существует) или пароль
  • Учетная запись пользователя в AD отключена или временно заблокирована
  • Домен недоступен
Этот PowerShell скрипт не использует PowerShell модуль для Active Directory из набора RSAT и его можно использовать для тестирования учетных данных пользователя с любого Windows компьютера.

Если нужно подключиться к контроллеру домена с компьютера в рабочей группе или другого домена, нужно указать LDAP строку для подключения к DC. Замените 4 строку на:

(New-Object System.DirectoryServices.DirectoryEntry 'LDAP://DC=winitpo,DC=loc', $username, $password).psbase.name -ne $null

Или можно подключиться к контроллеру домена по IP адресу:

(New-Object System.DirectoryServices.DirectoryEntry 'LDAP://192.168.158.10', $username, $password).psbase.name -ne $null

Если пользователь добавлен в защищенную группу ‘Protected Users’, нужно указывать имя пользователя с доменом ( remontkausername или [email protected] ). В этом случае будет использоваться Kerberos аутентификация, а не NTLM .
admin

Share
Published by
admin

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

3 недели ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

3 недели ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

3 недели ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

3 недели ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

3 недели ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

3 недели ago