Active Directory からいくつかの簡単なレポートを作成したいと考えています。ディスカッションなどを行った結果、.NET FW 3.5 以降を使用する場合は、.NET FW を使用するのが適切であることがわかりましたPrincipalContext
。原則と、この新機能でできることを理解したいと思います ( とは異なりDirectoryEntry
ます )。
コードスケルトン
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"YOURDOMAIN", "OU=SomeOU,DC=YourCompany,DC=com");
// define a "query-by-example" principal - here, we search for a UserPrincipal
// which has a password that will expire in 3 days or less
UserPrincipal userTemplate = new UserPrincipal(ctx);
userTemplate.AdvancedSearchFilter.AccountExpirationDate(DateTime.Today.AddDays(3), MatchType.LessThanOrEquals);
// instantiate searcher
PrincipalSearcher searcher = new PrincipalSearcher(userTemplate);
// enumerate matching users
foreach (Principal foundPrincipal in searcher.FindAll())
{
UserPrincipal foundUser = (foundPrincipal as UserPrincipal);
if (foundUser != null)
{
// do something with users found - e.g. send e-mail
}
}
LDAP へのログイン用にこのプロパティをコードに追加することは可能ですか?:
- どの LDAP が使用されているか (バージョン 2 または 3)
- LDAP が実行されているポートを設定する方法
- SSL 接続が必要な場合はどうすればよいですか? (別のポート、特別な要件でなければなりません)
また、AdvancedSearchFilter
この条件でいいですか?
(私は と のみを見つけましAccountExpirationDate
たAccountLockoutDate
)
- ユーザーのパスワードは近いうちに期限切れになります
- ユーザーのパスワードの有効期限が切れています
- ユーザーのパスワードの有効期限が切れるかどうかを確認する
- ユーザー アカウントの有効期限が切れる (アカウント、パスワードなし)
- 期限切れのユーザー アカウント (アカウント、パスワードなし)
- ユーザー アカウントの有効期限が切れていない