Có tiện ích dòng lệnh Windows để xác minh thông tin đăng nhập của người dùng không?


19

Trên nền tảng Windows, có bất kỳ tiện ích dòng lệnh nào tôi có thể chuyển qua username, password domain nameđể xác minh thông tin đăng nhập (hoặc có thể đưa ra lỗi rằng tài khoản bị vô hiệu hóa, không tồn tại hoặc hết hạn)?


2
Tại sao bạn cần xác minh thông tin đăng nhập của bất kỳ ai, nhưng thông tin của riêng bạn. Là một SysAd có trách nhiệm và đáng kính, bạn không cần phải biết thông tin đăng nhập của bất kỳ ai khác (ngoại trừ tài khoản root hoặc tài khoản Quản trị viên tên miền).
gWaldo

6
@gWaldo: Tôi đến đây với tư cách là một kỹ sư phần mềm đang viết chương trình cài đặt hỏi người dùng về thông tin đăng nhập của tài khoản máy hiện có, sau đó chúng tôi sẽ lưu trữ (mã hóa) cho các cuộc gọi mạo danh API Win32 cấp mã. Tôi tìm thấy câu hỏi và câu trả lời có liên quan và hữu ích, cũng như hợp pháp.
Mike Atlas

1
Tôi thiết lập người dùng với mật khẩu mặc định và hướng dẫn họ thay đổi mật khẩu. Bây giờ một vài tuần sau, tôi muốn biết ai đã và ai chưa.
Mark Berry

@Mark Blackberry bạn chỉ nên đánh dấu vào hộp kiểm trong hồ sơ người dùng buộc họ phải thay đổi mật khẩu của họ trong lần đăng nhập tiếp theo.
Craig

2
@Craig, ngay cả khi tôi buộc họ thay đổi mật khẩu khi đăng nhập, điều đó vẫn không đảm bảo rằng họ đã đăng nhập trong một tuần hoặc một tháng sau đó; Tôi cần một cách để kiểm tra từ dòng lệnh. Thay đổi mật khẩu cưỡng bức thậm chí có thể khóa người dùng từ xa nếu Xác thực cấp độ mạng được bật. Và đôi khi, công ty (khách hàng) yêu cầu một cú chạm nhẹ nhàng hơn là buộc phải thay đổi mật khẩu.
Mark Berry

Câu trả lời:


14

Bạn có thể sử dụng net uselệnh, chỉ định tên người dùng và mật khẩu trên dòng lệnh (trong biểu mẫu net use \\unc\path /user:username passwordvà kiểm tra errorleveltrả lại để xác minh xem thông tin đăng nhập có hợp lệ không.

Các runaslệnh sẽ làm việc cũng vậy, ngoại trừ việc bạn sẽ có một thời gian khó khăn thử nghiệm đầu ra.

Kiểm tra thông tin xác thực cho sự tồn tại của tài khoản sẽ là vấn đề sử dụng net userhoặc dsquery. Các net userlệnh sẽ không cho bạn biết nếu một tài khoản bị khóa ra, nhưng truy vấn lockoutTimethuộc tính của tài khoản người dùng có thể nói với bạn rằng.


7
runas /user:username cmdsẽ mở một cửa sổ dòng lệnh mới như usernamethể bạn cung cấp mật khẩu hợp lệ và người dùng đó có thể đăng nhập vào máy tính này. Tôi thường sẽ mở một shell để kiểm tra rằng mật khẩu vẫn là mặc định dựa trên thông tin cá nhân của họ mà tôi có thể tra cứu.
PsychoData

13

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

Tham khảo: /programming/7663219/how-to-authenticate-an-user-in-activingirectory-with-powershell


Tôi đang đến ObjectNotFound: (Test-ADAuthentication:String) [], CommandNotFoundExceptionđây. Điều này có độc quyền trên bộ điều khiển miền và không dành cho tài khoản cục bộ không?
SaAtomic

1
@SaAtomic Bạn cần xác định chức năng trong phiên của mình trước khi chạy nó. Test-ADAuthenticationkhông được xây dựng thành powershell
Kolob Canyon

1
Một điều tôi thực sự không thích về câu trả lời của bạn là bạn không đọc mật khẩu dưới dạng một chuỗi bảo mật. Mật khẩu văn bản đơn giản luôn là một ý tưởng tồi. $pass = Read-Host -assecurestring 'Enter password'
Hẻm núi Kolob

1

Chỉ muốn thêm rằng vì AD là máy chủ LDAP, bạn có thể sử dụng công cụ dòng lệnh LDAP để 'liên kết' với nó, do đó xác nhận xem nó có hoạt động hay không. Bạn cũng có thể liên kết với tư cách là người dùng với các đặc quyền cao hơn và sau đó tìm kiếm AD bằng cách sử dụng các nguyên tắc LDAP.

Nhưng này-- không có gì sai với Powershell!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.