我正在尝试编写一个 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 执行此操作,我也对此持开放态度。
将 lastLogonTimestamp 属性添加到您的过滤器,并获取六个月前 lastLogonTimestamp 的数值。例子:
130200503900000000 是 2013-08-03 20:39:50 的值
在 PowerShell 中,您可以获得数字 fileTime,如下所示:
http://blogs.technet.com/b/ashleymcglone/archive/2013/12/20/back-to-the-future-working-with-date-data-types-in-active-directory-powershell.aspx