DSQuery 查找过去 26 周内连接到域的运行 Windows XP 的系统

DSQuery 查找过去 26 周内连接到域的运行 Windows XP 的系统

我正在尝试编写一个 dsquery,它将告诉我过去 26 周内哪些运行 XP 的系统连接到了我们的域,以便我们能够确定在接下来的两个月内需要逐步淘汰哪些系统。

我目前面临的问题是,当我执行 dsquery 来查找运行 Windows XP 的系统时,它会返回一个系统列表,其中我知道有许多系统不活跃,需要作为 AD 对象删除(这是另一个问题,请不要给我讲最佳实践/安全讲座...一次一件事)。

我使用以下查询来查找运行 Windows XP 的系统并将其输出到文本文件:

dsquery * domainroot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*))" -limit 1000 > c:\XP_Machines.txt

我想添加该查询,它将告诉我上面输出中的哪些系统在过去 26 周内已连接到网络。

我知道要找到过去 26 周内未连接的系统,我可以运行:

dsquery computer -inactive 26

但是,我不确定如何找到过去 26 周内哪些系统作为运行 Windows XP 的系统输出的子集而处于活动状态。

提前感谢你的帮助。

笔记:如果有更好的方法可以使用 PowerShell 来实现此目的,我也愿意接受。

答案1

将 lastLogonTimestamp 属性添加到过滤器,并获取六个月前的 lastLogonTimestamp 数值。示例:

dsquery * domainRoot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*)(lastLogonTimestamp<=130200503900000000))" -limit 1000

130200503900000000 是 2013-08-03 20:39:50 的值

在 PowerShell 中,您可以按如下方式获取数字文件时间:

[datetime]::Now.AddDays(-180).ToFileTime()  

http://blogs.technet.com/b/ashleymcglone/archive/2013/12/20/back-to-the-future-working-with-date-data-types-in-active-directory-powershell.aspx

相关内容