Чи є утиліта командного рядка Windows для перевірки облікових даних користувачів?


19

Чи є на платформі Windows будь-яка утиліта командного рядка, яку я можу передати username, password domain nameдля перевірки облікових даних (або, можливо, помилки, що обліковий запис вимкнено, не існує чи закінчився термін дії)?


2
Навіщо вам потрібно перевіряти будь-які повноваження, окрім власних. Як відповідальний і поважний SysAd, вам не потрібно знати інших даних (крім, можливо, root або облікових записів адміністратора домену).
gWaldo

6
@gWaldo: Я прийшов сюди як інженер програмного забезпечення, який пише програму інсталятора, яка запитує у користувача облікові дані існуючого облікового запису машини, які ми згодом зберігаємо (зашифровуємо) для викликів привласнення інтерфейсу API Win32 API рівня. Я знайшов це запитання та відповідь відповідним та корисним, а також законним.
Майк Атлас

1
Я налаштував користувачів з паролем за замовчуванням і доручив їм змінити його. Через пару тижнів я хочу знати, хто є, а хто ні.
Марк Беррі

@MarkBerry вам слід просто поставити галочку в профілі користувача, змусивши їх змінити свій пароль при наступному вході.
Крейг

2
@Craig, навіть якщо я змушую їх змінити пароль при вході, це все ще не гарантує того, що вони увійшли через тиждень чи місяць пізніше; Мені потрібен спосіб перевірити з командного рядка. Примусові зміни паролів можуть навіть заблокувати віддалених користувачів, якщо ввімкнено автентифікацію на рівні мережі. І часом компанія (замовник) вимагає більш м'якого дотику, ніж примушування до зміни пароля.
Марк Беррі

Відповіді:


14

Ви можете використовувати net useкоманду, вказавши ім'я користувача та пароль у командному рядку (у формі net use \\unc\path /user:username passwordта перевірте errorlevelповернуті, щоб переконатися, що обліковий запис дійсний.

runasКоманда буде працювати, теж, за винятком того, що ви будете мати жорстке час тестування на виході.

Тестування облікових даних на наявність облікового запису було б питанням використання net userабо dsquery. net userКоманда не буде повідомляти вам , якщо обліковий запис заблоковано, але запитуючи lockoutTimeатрибут облікового запису користувача , може вам сказати.


7
runas /user:username cmdвідкриє нове вікно командного рядка, usernameніби ви вказали дійсний пароль, і цей користувач може увійти на цей комп'ютер. Я зазвичай відкриваю оболонку, щоб перевірити, що пароль все ще є за замовчуванням на основі їх особистої інформації, яку я можу шукати.
PsychoData

13

У 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:\>

Довідка: /programming/7663219/how-to-authenticate-an-user-in-activedirectory-with-powershell


Я потрапляю ObjectNotFound: (Test-ADAuthentication:String) [], CommandNotFoundExceptionсюди. Це працює виключно на контролері домену, а не на локальних облікових записах?
SaAtomic

1
@SaAtomic Перед тим, як запустити її, потрібно визначити функцію в сеансі. Test-ADAuthenticationне вбудований у власну оболонку
Калонь Колоб

1
Одне, що мені дуже не подобається у вашій відповіді, це те, що ви не читаєте пароль як захищену рядок. Прості текстові паролі - це завжди погана ідея. $pass = Read-Host -assecurestring 'Enter password'
Калонь Колоб

1

Просто хотів додати, що оскільки AD є сервером LDAP, ви можете використовувати інструмент командного рядка LDAP, щоб 'прив’язати' до нього, тим самим підтвердивши, чи він активний чи ні. Ви також можете прив'язуватись як користувач із більш високими привілеями, а потім шукати AD, використовуючи принципи LDAP.

Але ей - нічого поганого з Пауершеллом!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.