Nếu bạn đang ở trên NET 3.5 hoặc mới hơn, bạn nên kiểm tra PrincipalSearcher
và một "truy vấn theo ví dụ" chủ yếu để làm tìm kiếm của bạn:
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", "OU=SomeOU,DC=YourCompany,DC=com");
// define a "query-by-example" principal - here, we search for a UserPrincipal
// and with the first name (GivenName) of "Bruce"
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.GivenName = "Bruce";
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// set the PageSize on the underlying DirectorySearcher to get all 3000 entries
((DirectorySearcher)srch.GetUnderlyingSearcher()).PageSize = 500;
// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
}
Nếu bạn chưa - hoàn toàn đọc bài viết MSDN Managing Directory Security Principals in the .NET Framework 3.5 trong đó cho thấy độc đáo làm thế nào để tận dụng tốt nhất của tính năng mới trong System.DirectoryServices.AccountManagement
Cập nhật:
Tất nhiên, tùy thuộc vào nhu cầu của bạn, bạn có thể muốn xác định các tài sản khác trên rằng "truy vấn theo ví dụ" người dùng chính bạn tạo ra:
Surname
(hoặc cuối cùng tên)
DisplayName
(thường: tên đầu tiên + không gian + tên cuối cùng)
SAM Account Name
-/AD tên tài khoản Windows của bạn
User Principal Name
- "[email protected]" tên phong cách của bạn
Bạn có thể chỉ định bất kỳ thuộc tính trên UserPrincipal
và sử dụng những người như "truy vấn-by-dụ" cho PrincipalSearcher
của bạn.
Cập nhật # 2: Nếu bạn muốn tìm kiếm ngay bên trong một OU nhất định, bạn có thể xác định OU đó trong hàm tạo của PrincipalContext
.
Nguồn
2011-07-17 09:50:20
nhưng tôi muốn lọc theo OU, và có được một kết quả của tất cả các loại là người dùng trong OU đó, ở đây là không có từ khóa để tìm kiếm – cciikk
Đó là mát mẻ, cảm ơn bạn! – cciikk
@cciikk: xem cập nhật của tôi - bạn có thể giới hạn tìm kiếm của bạn vào một container cụ thể bằng cách định nghĩa rằng trong constructor của 'PrincipalContext' –