В скриптах 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
,
domain\username
или
[email protected]
). Если указаны действительные учетные данные пользователя, скрипт вернет True.
Если скрипт вернул False, возможные причины:
- Неверное имя пользователя (проверьте, что пользователь существует) или пароль
- Учетная запись пользователя в AD отключена или временно заблокирована
- Домен недоступен
Если нужно подключиться к контроллеру домена с компьютера в рабочей группе или другого домена, нужно указать 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
winitpro\username
или
[email protected]
). В этом случае будет использоваться Kerberos аутентификация, а не NTLM.