活动目录过滤器返回非活动用户

时间:2016-05-10 22:28:14

标签: vb.net active-directory

我继承了一个可执行文件,用于更新数据库表和Active Directory中的用户。

过滤器设置为:

Dim strFilter As String = "(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=" & ADS_UF_ACCOUNTDISABLE & ")(whenChanged>=" & Format(dteADLastSyncTime, "yyyyMMddHHmmss") & ".OZ))"

哪个解析为:

(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=20091206100029.OZ))

dteADLastSyncTime存储上次运行此进程的时间,并在程序流结束时更新。

现在发现了一个错误,其中一些非活动用户(在他们的whenChanged属性> =上次同步时间的意义上处于非活动状态)未被更新为非活动用户。对于找到的非活动用户,应在数据库和AD中设置标志。

我的问题是strFilter向我看了一下,看起来像是变化的条件> =' date'这是错误的方式,但我不确定AD是否足够。 whenChanged就像用户上次修改的标志一样?如果是这样的话那么条件不应该是改变< =' date' ?

其次userAccountControl:1.2.840.113556.1.4.803:= 2 - 这是不是要求Active Directory已经禁用帐户?

1 个答案:

答案 0 :(得分:0)

查询似乎正在查找自上次作业运行以来已禁用的帐户。我认为这是为了确保它不会一遍又一遍地处理旧的禁用帐户。

例如,如果作业在5月10日运行,那么当它在5月11日再次运行时,它只会查找已禁用且在5月10日之后被修改的帐户,因为您可以认为5月10日的工作已经处理了5月10日之前修改过的帐户。

现在,它们没有恢复的帐户,实际上已被禁用了吗?

有很多方法可以识别非活动帐户。它们可以被禁用(这意味着某人或某些工作故意禁用该帐户),它们可能已过期(这会阻止登录,但不会将帐户设置为已禁用),或者它们可能会被放弃。

可以通过查看上次登录日期或查找密码已过期一段时间的帐户来识别被遗弃的帐户。