Пожалуй каждый администратор домена сталкивается с так называемыми «мертвыми душами». Никакой мистики тут нет. Люди устраиваются на работу, увольняются, а отдел кадров обычно не спешит сообщать об этом системному администратору. Также бывает и с неактивными компьютерами. И со временем накапливается куча пользователей, давным давно не не работающих. Мне понадобилось таких пользователей почистить и я накатал небольшой скрипт:
ON ERROR RESUME NEXTdim Targetset Target = GetObject(«WinNT://домен/контроллердомена»)set fso = CreateObject(«Scripting.FileSystemObject»)set file = fso.OpenTextFile(«test.txt», 8, true)rem WScript.echo Target.Name & «,» & Target.Classfile.WriteLine(Target.Name & «,» & Target.Class)Target.Filter = Array(«User»)for Each C in Targetrem WScript.Echo C.Name&» «&C.LastLoginif c.accountdisabled = 0 thenfile.WriteLine(C.Name & «;» & C.LastLogin )end ifnextfile.WriteBlankLines(1)file.Close()WScript.Echo(«Downloading completed!»)
Принцип работы очень простой, в цикле обходит всех пользователей домена полученных фильтром user, берет из него только те которые не заблокированы и выводит в файл дату последнего входа в домен.
Файлик открываем екселем, сортируем по второй колонке и анализируем тех кто давно уже не авторизовывался в домене. При необходимости блокируем их или удаляем.
4 комментария
А как проверить конкретный организационный юнит? скажем пользователи раскиданы по 20 OU и нет возможности проверить все
Можно скомбинировать с этим http://www.denaie.ru/?p=1056
Точно. Подставил эту строку и все заработало.
set Target = GetObject («LDAP://cn=X_Users,ou=Security,dc=blabla,dc=bla,dc=ru»)
Спасибо.
Можно сразу добавить в статью..:), в качестве комментария.
Скрипт очень нужный, но есть одна проблема, скрипт моментально показывает «Downloading completed!», но продолжает загружать данные пользователей
И есть вопрос, у меня пользователи разбиты на несколько групп, как сделать выборку только по пользователям из конкретной группы?
Предложение Андрея не сработало, почему не знаю!!!