active-directory – “dsquery computer -inactive x”忽略非常旧的显然不活动的计算机

我继承了一个包含数百个长期死计算机帐户的AD环境.我想开始清理它们.如果我使用dsquery computer -inactive命令,它似乎忽略这些计算机,并且仅返回在最近几个月/周内处于活动状态但在给定时间段内未处于活动状态的计算机.

例如,如果我运行dsquery computer -inactive 4,我会得到一台计算机.如果我运行dsquery计算机-inactive 3我得到大约五.如果我运行dsquery computer -inactive 1,我会得到一个大的列表.这些列表都没有显示非常旧的计算机帐户.

我误解了这个命令应该做什么吗?

dsquery computer -inactive x使用LastlogonTimeStamp属性来确定计算机是否处于非活动状态. LastlogonTimeStamp的两个特性是:

1)它非常松散,即无处接近实时.每次计算机登录到域时都不会更新此属性,即使更新它,也不会立即将其复制到其他域控制器.

2)它可以为null,在这种情况下,dsquery很可能会忽略它.

-stalepwd开关还可以帮助您识别不活动的计算机帐户.计算机帐户应每30天自动更新一次密码.但请注意,它使用pwdLastSet LDAP属性,该属性也可以为null. pwdLastSet是一个恼人的文件时间,但.Net / Powershell可以轻松地将其转换为人性化的日期:

PS C:\Users\ryan> Get-ADComputer -Filter * -Properties PasswordLastSet,LastlogonTimeStamp | ? { $_.PasswordLastSet -LT $(Get-Date).AddDays(-180) } | Select Name,PasswordLastSet,LastlogonTimeStamp | sort-object PasswordLastSet -Descending

上面的Powershell行将为您提供所有计算机帐户,其中pwdLastSet属性(Powershell将其转换为人类可读的PasswordLastSet)超过180天,最新的帐户将位于顶部.最旧的帐户和具有null pwdLastSets的帐户将位于底部.

(当然,您可以在计算机上禁用密码更改,但这是相对罕见的事情.)

这些具有空值的帐户通常意味着他们从未登录过域和/或从未更改过他们的密码.我确定可能会出现其他一些奇怪的用例,例如管理员预先安排计算机帐户,然后决定永远不会真正将计算机加入域,来自同一个林的其他子域的计算机帐户等你只需要调查那些.

如果您想阅读它,请参阅AskDS的LastlogonTimeStamp的更多信息:

http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works.aspx

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...