Active Directory、特に特定のアカウントを監視するプロセスをセットアップして、ロックされていないことを確認するように依頼されました。これにより、サポート チームは早期に警告を受けることができます。
基本的にリクエストを設定して通知キューに追加するコードをいくつか見つけました。次に、このイベントは変更イベントに割り当てられ、ObjectChangedEventArgs オブジェクトが渡されます。
現在、次のように、属性を反復処理してテキスト ファイルに書き込みます。
private static void NotifierObjectChanged(object sender,
ObjectChangedEventArgs e)
{
if (e.ResultEntry.Attributes.AttributeNames == null)
{
return;
}
// write the data for the user to a text file...
using (var file = new StreamWriter(@"C:\Temp\UserDataLog.txt", true))
{
file.WriteLine("{0} {1}", DateTime.UtcNow.ToShortDateString(), DateTime.UtcNow.ToShortTimeString());
foreach (string attrib in e.ResultEntry.Attributes.AttributeNames)
{
foreach (object item in e.ResultEntry.Attributes[attrib].GetValues(typeof(string)))
{
file.WriteLine("{0}: {1}", attrib, item);
}
}
}
}
オブジェクトをチェックして、名前などの特定のフィールドが特定の値であるかどうかを確認し、IsAccountLocked 属性が True であるかどうかを確認し、それ以外の場合はレコードをスキップして、次の通知が来るまで待ちます。 ResultEntry の特定の属性にアクセスする方法に苦労しています。それらすべてを反復処理する必要はありません。
これが理にかなっているといいのですが、追加情報を提供できるかどうか尋ねてください。
ありがとう
マーティン