我被要求设置一个监视活动目录(特别是某些帐户)的进程,以检查它们未锁定,以便在发生这种情况时支持团队可以获得预先警告。使用C#检索特定的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的特定属性,而无需遍历所有这些属性。
我希望这是有道理的 - 请询问我是否可以提供任何其他信息。
感谢
马丁
谢谢Eric,这非常有帮助。好的,目前查询有一个子树的范围,我可以为您提供一个示例查询,但是它当前返回所有用户ID的字符串属性,这些用户的ID已经应用了更改,即它们已经登录,注销,更改密码等等。所以我不想要的是该人员的所有数据,但是检查该人员是否是列表中的一个,在这种情况下是服务帐户,然后如果是,请检查以确保该帐户未被锁定。警报可发送给支持团队,以便在有人可用时立即解锁。 –
我会很感激你可以给予的任何帮助,因为虽然我对AD有一个模糊的理解,但听起来你知道的比以前任何时候都多!:)马丁 –
仅供参考通知的查询是:OU = Associates,OU =用户帐户,OU = XXX,OU =迁移,DC = AAA,DC = BBB,DC = CCC –