我目前正在处理 Active Directory,我需要知道某些帐户何时被禁用。有last_modified(日期)属性,但我不确定在AD上启用/禁用帐户是否会触发last_modified的更改。如果是,是否有其他属性在修改时也会改变它(可能是这种情况......)?
有没有办法通过检查属性或执行 cmd/powershell 脚本来确定帐户何时被禁用?
谢谢你
有点。但它不会 100% 可靠。
要禁用帐户,请更新
userAccountControl
属性。
是的,更新
userAccountControl
将触发对 whenChanged
属性(“上次修改”日期)的更新。
还有一个名为
msDS-ReplAttributeMetaData
的计算属性,只要您的域上启用了该功能,它就会告诉您属性何时更改。在这篇文章的帮助下,我将一些代码放在一起,以提取上次更改userAccountControl
属性的时间(将$username
设置为您要查看的帐户的名称):
$username = "whatever"
$metaData = "<root>" + (Get-ADUser $username -Properties "msDS-ReplAttributeMetaData")."msDS-ReplAttributeMetaData".Replace([char]0," ") + "</root>"
$xmlmetaData = [XML]$metaData
$userAccountControlModified = ($xmlmetaData.root.DS_REPL_ATTR_META_DATA |
Where {$_.pszAttributeName -eq "userAccountControl" } |
Sort -Property ftimeLastOriginatingChange -Descending |
Select -First 1).ftimeLastOriginatingChange
但是,正如 userAccountControl
因此,虽然您可以获取上次更新
userAccountControl
的日期,但您不能保证那是帐户被禁用的时间。这些选项中的任何其他选项都可能在禁用后被设置。
有更好的方法吗?我想避免上面的解决方案,因为它可能很棘手。