Я пытаюсь написать один 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 за шесть месяцев назад. Пример:
dsquery * domainRoot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*)(lastLogonTimestamp<=130200503900000000))" -limit 1000
130200503900000000 - значение для 2013-08-03 20:39:50
В PowerShell вы можете получить числовое значение fileTime следующим образом:
[datetime]::Now.AddDays(-180).ToFileTime()