我继承了一个包含数百个长期死计算机帐户的AD环境.我想开始清理它们.如果我使用dsquery computer -inactive命令,它似乎忽略这些计算机,并且仅返回在最近几个月/周内处于活动状态但在给定时间段内未处于活动状态的计算机.
例如,如果我运行dsquery computer -inactive 4,我会得到一台计算机.如果我运行dsquery计算机-inactive 3我得到大约五.如果我运行dsquery computer -inactive 1,我会得到一个大的列表.这些列表都没有显示非常旧的计算机帐户.
我误解了这个命令应该做什么吗?
dsquery computer -inactive x使用LastlogonTimeStamp属性来确定计算机是否处于非活动状态. LastlogonTimeStamp的两个特性是:
原文链接:https://www.f2er.com/windows/367625.html1)它非常松散,即无处接近实时.每次计算机登录到域时都不会更新此属性,即使更新它,也不会立即将其复制到其他域控制器.
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的更多信息: