我试图写一个单一的dsquery,告诉我在过去的26个星期内,哪些系统已经连接到我们的域名,正在运行XP,所以我们可以找出我们需要在未来两个月内逐步淘汰。
我目前面临的问题是,当我做一个dsquery来查找运行Windows XP的系统时,会返回一个系统列表,其中一些我不知道是不是主动的,需要作为AD对象删除(这是另一个问题,请让我最好的做法/安全讲座…一次一件事)。
我使用下面的查询来查找运行Windows XP的系统并将其输出到文本文件中:
dsquery * domainroot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*))" -limit 1000 > c:\XP_Machines.txt
我想添加到这个查询,这将告诉我在上面的输出中的哪些系统在过去的26周内已经连接到networking。
我知道在过去的26个星期里,我可以find没有连接的系统:
dsquery computer -inactive 26
但是,我不确定如何在过去的26周内find运行Windows XP系统输出的子系统。
提前感谢你的帮助。
注意:如果有更好的方法使用PowerShell来做到这一点,我也可以这么做。
将lastLogonTimestamp属性添加到您的filter中,并在六个月前获取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()