うんじぃが思いつくままに綴る

特にこれは!と思う事を書き綴っていきます

ActiveDirectoryから有効なユーザのみを取得する

色々調べていたけど、「これは!」というものがなかったので記載しておく。

ActiveDirectoryからデータを取得するには、

using System.DirectoryServices;

DirectoryEntry de = new DirectoryEntry("LDAP://” + サーバ名 + "/DC=hoge,DC=local";
DirectorySearcher drSearch = new DirectorySearcher(de);
drSearch.Filter = "(&(&(objectCategory=person)(objectClass=user))(!userAccountControl:1.2.840.113556.1.4.803:=2))";
SearchResultCollection scn = drSearch.FindAll();
 
foreach (SearchResult sResult in scn)
{
AccountViewModels models = getAccountViewModelsData(sResult.GetDirectoryEntry());
if (models != null) customers.Add(models);
}

こんな感じ。
Filterの設定方法が独特すぎ。