今月に誕生日を迎えるADのすべてのユーザーを見つけようとしています。私はこれを動的にしたいのですが、とにかく。LDAPのクエリを初めて使用し、検索をフィルタリングする文字列を作成するのに問題があります。現在、すべてのユーザーを取得し、LINQを使用して返されたユーザーのリストを並べ替えていますが、AD検索からユーザーを返すだけでよいと思いました。今私は持っています:
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry(_path, username, pwd);
System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=user)");
ADを実行している人は、B-dayがMMDD、つまり0508の形式の文字列として単純に保存されていると思います。それについては何もできません(より良い方法があれば、私にできることは何もありません)。
では、これに取り組むための最良の方法は何ですか?
必要に応じて追加のコード:
SortOption option = new SortOption("sAMAccountName", System.DirectoryServices.SortDirection.Ascending);
mySearcher.Sort = option;
DataSet ds = new DataSet();
DataTable dtUsers = new DataTable("Users");
dtUsers.Columns.Add("userid");
dtUsers.Columns.Add("name");
dtUsers.Columns.Add("birthday");
dtUsers.Columns.Add("anniversary");
dtUsers.Constraints.Add("UniqueUserId", dtUsers.Columns["userid"], true);
foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
System.DirectoryServices.DirectoryEntry de1 = resEnt.GetDirectoryEntry();
DataRow drUser = dtUsers.NewRow();
if (de1.Properties["sAMAccountName"].Value != null && de1.Properties["name"].Value != null && de1.Properties["employeeBirthDate"].Value != null && de1.Properties["employeeHireDate"].Value != null)
{
drUser["userid"] = de1.Properties["sAMAccountName"].Value.ToString();
drUser["name"] = de1.Properties["name"].Value.ToString();
drUser["birthday"] = de1.Properties["employeeBirthDate"].Value.ToString();
drUser["anniversary"] = de1.Properties["employeeHireDate"].Value.ToString();
dtUsers.Rows.Add(drUser);
}
}
ds.Tables.Add(dtUsers);