2012-03-09 16 views
7

tôi có mã này:tìm kiếm bằng sAMAccountName với các kí hiệu

public static DataTable ExecutesAMAccountNameQuery(string sAMAccountName) 
     { 
      string filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + sAMAccountName + "))"; 
      return ExecuteADQuery("GC:", filter); 
     } 

Nó chỉ hoạt động với đầy đủ tên người dùng, tôi không biết cú pháp để làm cho nó làm việc với các kí hiệu, giống như một NHƯ trong sql?

Cảm ơn

Trả lời

22

Nếu bạn đang sử dụng .NET 3.5 hoặc mới hơn, bạn có thể sử dụng một 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); 

// define a "query-by-example" principal - here, we search for a UserPrincipal 
UserPrincipal qbeUser = new UserPrincipal(ctx); 
qbeUser.SamAccountName = "Esteban*"; 

// create your principal searcher passing in the QBE principal  
PrincipalSearcher srch = new PrincipalSearcher(qbeUser); 

// 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 thiên đường đã hoàn toàn đọc bài viết Managing Directory Security Principals in the .NET Framework 3.5 của MSDN cho thấy cách sử dụng tốt nhất các tính năng mới trong System.DirectoryServices.AccountManagement. Hoặc xem không gian tên MSDN documentation on the System.DirectoryServices.AccountManagement.

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:

  • 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
  • User Principal Name - "[email protected]" tên phong cách của bạn

bạn có thể SPE quy định bất kỳ thuộc tính nào trên số UserPrincipal và sử dụng các thuộc tính đó làm "truy vấn theo ví dụ" cho PrincipalSearcher của bạn.

+0

Tôi chỉ duy trì một số mã hiện có, vì vậy tôi không muốn làm hỏng rất nhiều với mã bạn gửi cho tôi, tuy nhiên với điều này tôi cho rằng tôi có thể đặt * ở đầu và cuối và nó cũng hoạt động. –

+0

như thế này: sAMAccountName = * "+ sAMAccountName +" *) –

+0

@EstebanV .: [theo điều này] (http://technet.microsoft.com/en-us/library/ee198823.aspx) có vẻ như nó sẽ hoạt động , Vâng. –

Các vấn đề liên quan