воскресенье, 29 ноября 2009 г.

Get Computer LastLogon time

Поскольку работаю интегратором и занимаюсь миграцией доменов AD, часто возникает необходимость определения оставшихся компьютеров (те которые еще не перешли в новый домен), как правило, по причине того, что сисадмины заказчика просто-напросто забывают про какие-то компьютеры или у них нет желания этим заниматься. Иногда встречается и такое, что сисадмины заказчика не знают, сколько у них компьютеров в домене. Для этого написал утилиту, которая позволяет получить список активных/неактивных компьютеров за определенный период. Аналогичный функционал есть у утилиты dsquery, но она позволяет получить список компьютеров которые были неактивны x-недель, при этом необходим функциональный уровень домена Windows 2003 (поскольку использует атрибут LastLogonTimeStamp). Помимо этого LastLogonTimeStamp обновляется только по происшествии 14 дней (по умолчанию) с момента последнего обновления минус случайный процент от 5 (или 4х). Грубо говоря от 10 до 14 дней.

Данная утилита позволяет получить список компьютеров, которые были активны последние x-дней (это, например, необходимо для определения «переехавших» компьютеров или забытых компьютеров) или неактивны более чем x-дней (выведенных из эксплуатации).

Данную утилиту можно использовать и для других целей, например для составления списков для последующей миграции, или генерации отчетов о «переехавших» компьютерах.

Данная утилита требует установленного пакета .Net Framework 2.0 на компьютере, используемом для запуска утилиты.

Синтаксис данной утилиты можно получить, выполнив ее без параметров.

Примеры использования:

Получить все компьютеры, которые были не активны последние 30-дней в домене contoso.com, вывод в формате CSV:

GetComputerLastLogon -d contoso.com -t 30 -o CSV

Получить все компьютеры, которые были активны последние 5-дней в текущем домене, начиная поиск с организационного подразделения OU=COMPUTERS,OU=CONTOSO,DC=DOMAIN,DC=COM:

GetComputerLastLogon -r "OU=COMPUTERS,OU=CONTOSO,DC=DOMAIN,DC=COM" -t 5 -a

Получить все компьютеры, которые были активны последние 5-дней в текущем домене и имена которых не содержат SRV, поиск на контроллерах dc-01 и dc-02:

GetComputerLastLogon -f "(!(sAMAccountName=*SRV*))" -t 5 -l "dc-01,dc-02" -a

Получить время последнего входа для компьютеров wks-01 и wks-02, в текущем домене:

GetComputerLastLogon -c "wks-01,wks-02"

Первый столбец в выводе команды показывает, на каком контроллере домена последний раз аутентифицировался компьютер (также полезно для выявления некорректно-настроенной топологии сайтов), второй столбец SAMAccountName компьютера, третий время последнего входа в формате UTC.

Ссылка для скачивания:
http://rapidshare.com/files/352350582/GetComputerLastLogon.exe.html
MD5: EE72AA5B687644961D48252E8F318468