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の設定方法が独特すぎ。