четверг, 19 марта 2015 г.

VBS скрипт для учета компьютеров и пользователей, наводим порядок

Что делает этот скрипт?
Помещенный в автозагрузку средствами GPO, он запускается от имени пользователя и в учетной записи пользователя в поле Номер телефона пишет когда и на каком компьютере осуществлен вход. 
А в карточке компьютера в поле "Описание", добавляет имя учетной записи (!!!) и время входа. 

Таким образом, имеем возможность отслеживать кто из пользователей за каким компьютером работает. 
В большой организации на 200+ компьютеров вещь незаменимая.
 
Итак:

Dim adsinfo, ThisComp, oUser
' Определяем объекты
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
' Заносим данные в AD
' В поле Описание компьютера пишем имя пользователя, и время входа
Thiscomp.put "Description", "Logged on: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo
'В поле Номер телефона учетки пользователя пишем имя компьютера и время входа
oUser.put "TelephoneNumber", "Logged on: " + ThisComp.cn + " " + CStr(Now)
oUser.Setinfo 
wscript.quit

Плюсы

  • при таком скрипте достаточно настроить в оснастке AD отображение одного дополнительного столбца (в нашем случае department) и можно будет четко видеть где кто работает в данный момент, когда он туда залогинился, либо если на компьютере никто не работает – то кто на нем работал последним, и когда вышел из системы
  • Не привлекается никакого стороннего ПО, нагрузка на систему (время входа пользователя) увеличивается очень незначительно
  • Легко и наглядно отслеживается наличие старых объектов компьютеров-пользователей в AD (по дате последнего логина)
  • Данные централизованно хранятся в AD и не нужно никакого дополнительного хранилища (файла, папки, БД и т.п.). Данные дублируются в объектах Пользователь и Компьютер, т.е. можно отследить ситуацию «дважды под одним и тем же вошел на разных компьютерах».
  • Выбраны наименее используемые (у нас и у всех тех организаций, с которыми я работал) ОБЩИЕ для объектов пользователь и компьютер поля AD. Это плюс, потому что если бы поля были разными – то пришлось бы добавлять отображение лишних столбцов в оснастке AD
  • Легко корректировать скрипт по своему усмотрению (выбирать другие поля для хранения данных, писать дополнительно в текстовый файл, исключать из обработки отдельных пользователей или компьютеры (например терминальные сервера), и т.д.)

Минусы

  • НЕ ХРАНИТСЯ история входов, т.е. записано только текущее состояние. Если история входов нужна, то временно можно добавив несколько строк кода писать информацию еще и в сетевой файл, а если нужна постоянно – то лучше подумать о другом методе учета.
  • Требуется выдать дополнительное разрешение Write\Modify на поле Department объектов Компьютер и Пользователь в AD для всех доменных пользователей. Минус в моей ситуации сомнительный, но и отрицать его не буду – он есть.