Сегодня ненароком заглянув в консоль Active Directory Users & Computers обнаружил, что в AD есть некоторое количество старых учетных записей компьютеров и пользователей. Ситуацию подогрело и то, что аналогичная картина присутствовала и в консоли WSUS. И тут я понял – пора начинать чистку.
Начнем с простого – со WSUS. Как известно, WSUS получает запись о компьютере при первом обращении его к серверу, после этого информация о рабочей станции помещается в базу данных и поэтому при удалении объекта из AD, он все равно остается в консоли и тем самым портит красивую картину и статистику.
В консоли WSUS есть специальная утилита WSUS Server Cleanup Wizard (Options – Server Cleanup Wizard).
Выбрать интервал устаревания нельзя – он жестко задан – 30 дней. С одной стороны командировки более 30 дней не такая уж и редкость, с другой стороны вернувшись из командировки мобильный ПК вновь получит групповую политику и подключиться к серверу WSUS тем самым заново создав запись в базе. Единственная трудность возникает, если удаленный компьютер находился в группе – после переподключения он окажется в группе Unassigned Computers. Следовательно, правила применяемые на его прежнюю группу, могут не применяться к этому компьютеру. Второй, более гуманный вариант – это просмотр компьютеров вручную. Если упорядочить компьютеры по давности отчета о состоянии (All Computers – Last Status Report), то мы увидим наши «мертвые души».
Затем, если старых компьютеров приемлемое количество, то можно вручную выбрать и удалить старые учетные записи и, таким образом, получить актуальную картину обновляемых компьютеров.
Немного иначе обстоят дела с Active Directory. Несмотря на то, что AD является каталогом – нет точного способа узнать, какие учетные записи компьютеров и пользователей актуальны, а какие устарели. Именно такой способ был продемонстрирован на «Платформе 2009» при помощи PowerShell v2. Но позор мне (Васе привет) – PowerShell я так и не освоил, поэтому, как всегда будем использовать подручные средства. Первая мысль, которая пришла мне в голову – использовать атрибуты объекта LastLogon и LastLogonTimeStamp, но их использование довольно сложное дело, кроме того есть несколько нюансов – например значение атрибута LastLogon не реплицируется между контроллерами домена, а также, значения даты и времени выдается в нечеловекочитаемом формате. Продолжив поиски, я обнаружил, что существует немало платных и бесплатных утилит для выполнения подобных задач, но зачем использовать стороннее решение, если все необходимое уже есть в Windows Server. Так, например, прямо из консоли AD Users & Computers можно увидеть пользователей, которые не выполняли вход в систему определенное количество дней.
Но более интересным решением является использование утилиты командной строки dsquery.
Так один из ключей запроса позволяет показать объекты, которые не меняли свой пароль в течение заданного количества недель. По умолчанию, все объекты типа компьютер меняют свой пароль раз в 30 дней.
Команда dsquery computer domainroot -inactive 20 выведет список всех компьютеров в домене, которые не меняли свой пароль в течении 20 недель и следовательно устарели. Аналогичный вариант можно использовать и для объектов пользователей dsquery user domainroot -inactive 20.
Best practices рекомендуют не удалять объекты из AD, а отключать их, но часто встречается ситуация, когда компьютер не выводится корректно из домена, а следовательно его учетная запись остается включенной.
Я рекомендую для выбора устаревших компьютеров использовать срок в 16 недель. Компьютер, который не входил в домен на протяжении 16 недель просто так в него, все равно, не войдет.
Поэтому выполнив команду
dsquery computer domainroot -inactive 16 > c:\oldcomps.txt мы получим текстовый файл, со всеми неактивными объектами типа компьютер. Самым лучшим вариантом будет отключение этих учетных записей (Disable), можно это сделать как вручную, так и с помощью другой аналогичной утилиты dsmod, вызвав в качестве аргумента список полученный шагом ранее. Удалять учетные записи компьютеров можно при достижении порога неактивности в 24 недели. Для этой цели может пригодиться утилита командной строки dsrm, хотя такую операцию всегда лучше проводить собственноручно. Что же касается учетных записей пользователей, то лучшим решением будет выбрать неактивные объекты командой dsquery user domainroot –inactive 16 затем поместить их в отдельную OU и выключить (Disable) в отличие от учетных записей компьютеров, удаление учетной записи пользователя может вызвать огромное количество проблем, поэтому, если у вас нет острой необходимости именно в удалении учетной записи пользователя, то обычного отключения будет более чем достаточно.
Если же вы уже удалили учетную запись, но вскоре обнаружили, что она вам все ещё нужна – то в блоге Олега Крылова есть замечательный пост по восстановлению удаленных учетных записей.
Илгиз Мамышев says:
Для восстановления объектов в Active Directory я бы все же рекомендовал использовать утилиту AdRestore Марка Руссиновича http://technet.microsoft.com/ru-ru/sysinternals/bb963906.aspx
24 Июнь 2009, 8:43 дпГалака Тарас says:
тоже задался вопросом найти решение, как автоматизировать данный процесс. нашел весьма приятные утилиты. http://www.osp.ru/win2000/2004/08/177313/_p1.html
25 Июнь 2009, 11:48 дпв частности там описываются утилиты с сайта
http://joeware.net/freetools/index.htm
а собственно утилита OldCmp. Раньше тоже использовал dsquery, но думаю теперь начну пользоваться OldCmp.( в частности есть возможность генерировать Html отчеты а не только csv файлы)
Maxim Efremov says:
Обязательно посмотрю на досуге.
26 Июнь 2009, 10:19 дп!n$@!der says:
Большое спасибо! Очень сильно помогло. Стояля проблема – синхронизация учетных записей в домене и в касперском сервере. Нет компьютера – нет проблемы
9 Июль 2009, 6:30 ппархитектор says:
мне понравилось
27 Сентябрь 2009, 8:58 ппOccacibra says:
Выяснить пол малыша
23 Январь 2010, 8:47 пп