亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 AD 搜索中反轉過濾器

在 AD 搜索中反轉過濾器

C#
忽然笑 2022-12-31 12:43:20
我想在 AD 中搜索名稱不以前綴開頭的所有用戶。我應該怎么做?這不起作用using (var context = new PrincipalContext(ContextType.Domain, "my_do_main"))        {            UserPrincipal template = new UserPrincipal(context);            template.UserPrincipalName = "!my_prefix*"; //invertion NOT works            using (var searcher = new PrincipalSearcher(template))            {                foreach (var result in searcher.FindAll())                {                    var de = result.GetUnderlyingObject() as DirectoryEntry;                    Console.WriteLine(de.Properties["userPrincipalName"].Value);                }            }        }
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

你不能使用 來做到這一點PrincipalSearcher,但你可以使用 來做到這一點DirectorySearcher,無論如何這就是PrincipalSearcher幕后的用途。這是一個簡單的例子:


var search = new DirectorySearcher(new DirectoryEntry("LDAP://my_do_main")) {

    PageSize = 1000,

    Filter = "(&(objectClass=user)(!userPrincipalName=my_prefix*))"

};

search.PropertiesToLoad.Add("userPrincipalName");


using (var results = search.FindAll()) {

    foreach (SearchResult result in results) {

         Console.WriteLine((string) result.Properties["userPrincipalName"][0]);

    }

}

你會發現這無論如何都會執行得更快。根據我的經驗,直接使用DirectorySearcherDirectoryEntry總是比使用PrincipalSearcher(或AccountManagement名稱空間中的任何東西)快得多。不久前我寫了一篇關于該主題的文章:Active Directory:更好的性能


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號