понедельник, 29 января 2007 г.

Удаляем старые компьютеры из Active Directory

Рано или поздно в Active Directory появляются "мертвые" машины. Их уже нет. Их списали, переименовали, забросили в углу. Они не работают, а учетные записи от них остались. В большой компании они занимают лишнее место в и без того не маленькой базе AD. Встает вопрос о том, как эти записи найти и уничтожить.

Есть коммерческая утилита Janitor (в дословном переводе - уборщик) от Special Operations Software, но большой необходимости я в ней не вижу, ибо тот же функционал предлагает бесплатная утилитка OldCmp. Она без GUI, но вряд ли это недостаток.

OldCmp - один единственный исполняемый файл. Чтобы найти машины, не использовавшиеся 100 дней, запускаем:
oldcmp -report -age 100
В ответ утилита создаст файл HTML с отчетом. О том, сколько компьютер не использовался, OldCmp узнает по дате последней смены пароля. Не путайте со сменой пользовательского пароля. У компьютеров есть свои пароли, которые они меняют без вашей помощи, по умолчанию в домене каждые 30 дней. В домене на базе Windows 2003 можно обрабатывать машины не по дате смены пароля, а по дате последнего логона на них, добавив ключ -llts:
oldcmp -report -age 100 -llts
Далее можно удалять машины, но лучше сначала отключить, и посмотреть что будет :)
oldcmp -disable -unsafe -forreal -llts -age 100
Если никаких проблем не выявлено, можно удалять:
oldcmp -delete -unsafe -forreal -llts -age 100
Все остальное можно найти в документации к программе. Ниже привожу примеры из документации, по ним и так все понятно:

Ex1:
oldcmp /?
Display this help

Ex2a:
oldcmp -report
Generate html report of all cmpaccs > 90 days old

Ex2a:
oldcmp -report -format dhtml -sh
Generate dhtml report of all cmpaccs > 90 days old
Open the report after generating it

Ex2c:
oldcmp -report -format csv
Generate csv report of all cmpaccs > 90 days old

Ex3a:
oldcmp -report -age 0
Generate html report of all cmpaccs

Ex3b:
oldcmp -report -age 0 -format csv -delim tab
Generate csv (tab delimited) report of all cmpaccs

Ex4:
oldcmp -report -age 0 -onlydisabled
Generate html report of all disabled cmpaccs

Ex5:
oldcmp -report -age 0 -onlydisabled -sort cn
Generate html report of all disabled cmpaccs, sort on name

Ex6:
oldcmp -delete -age 0 -onlydisabled
Generate html report of all disabled cmpaccs, sort on pwage
Will show you what it would try to delete. Only up to 10.

Ex7:
oldcmp -delete -age 0 -onlydisabled -safety 100
Generate html report of all disabled cmpaccs, sort on pwage
Will show you what it would try to delete. Only up to 100.

Ex8:
oldcmp -delete -age 0 -onlydisabled -unsafe
Generate html report of all disabled cmpaccs, sort on pwage
Will show you what it would try to delete. All cmpaccs.

Ex9:
oldcmp -delete -age 0 -onlydisabled -unsafe -forreal
Generate html report of all disabled cmpaccs, sort on pwage
Will REALLY DELETE all accounts identified.

Ex10:
oldcmp -disable -unsafe -forreal
Generate html report of all cmpaccs > 90 days, sort on pwage
Will REALLY DISABLE all accounts identified.

Ex11:
oldcmp -report -sort OS -age 0 -maxage 60
Generate html report of all cmpaccs still valid, sort on OS

Ex12:
oldcmp -report -af "(operatingsystem=Windows XP Professional)" -onlydisabled -age 0
Generate html report of all disabled Windows XP machines

Ex13:
oldcmp -report -b ou=mycmps,dc=domain,dc=com
Generate html report of cmpaccs >90 days in specified OU