我被要求设置一个监控活动目录的进程,特别是某些帐户,以检查它们是否没有被锁定,这样如果发生这种情况,支持团队可以得到早期警告。
我找到了一些让我开始的代码,它基本上设置了请求并将它们添加到通知队列中。然后将此事件分配给一个更改事件,并将一个 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 的特定属性而不必遍历它们。
我希望这是有道理的 - 请询问我是否可以提供任何其他信息。
谢谢马丁
_