使用通配符搜索samaccountname
我有这个代码:
public static DataTable ExecutesAMAccountNameQuery(string sAMAccountName) { string filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + sAMAccountName + "))"; return ExecuteADQuery("GC:", filter); }
它只适用于完整的用户名,我不知道使其与通配符一起使用的语法,比如sql中的LIKE?
谢谢
如果您使用的是.NET 3.5或更高版本,则可以使用PrincipalSearcher
和“按示例查询”主体进行搜索:
// 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..... }
如果您还没有 – 绝对阅读MSDN文章.NET Framework 3.5中的管理目录安全主体,它很好地展示了如何充分利用System.DirectoryServices.AccountManagement
中的新function。 或者,请参阅System.DirectoryServices.AccountManagement命名空间上的MSDN文档 。
当然,根据您的需要,您可能希望在您创建的“按示例查询”用户主体上指定其他属性:
-
DisplayName
(通常:名字+空格+姓氏) -
SAM Account Name
– 您的Windows / AD帐户名称 -
User Principal Name
– 您的“username@yourcompany.com”样式名称
您可以在UserPrincipal
上指定任何属性,并将其用作PrincipalSearcher
“按示例查询”。
- 使用C#检查Active Directory中是否存在UserID
- 通过电子邮件地址在ActiveDirectory中查找用户
- 如何使用System.DirectoryServices.ActiveDirectory.Domain类获取域别名
- 在.NET Web应用程序中获取登录用户的UPN或电子邮件
- 通过.net获取Active Directory组中的用户名
- 我如何在.NET中处理Negotiate?
- 如何通过WebRequest调用MVC操作并通过Active Directoryvalidation请求?
- 如何在Active Directory中更改用户的登录名
- 从非域计算机连接到域SQL Server 2005