Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wptelegram domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-pagenavi domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Функция _load_textdomain_just_in_time вызвана неправильно. Загрузка перевода для домена kirki была запущена слишком рано. Обычно это индикатор того, что какой-то код в плагине или теме запускается слишком рано. Переводы должны загружаться при выполнении действия init или позже. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114
Скрипт для Windows, кто за каким компьютером работает.

Скрипт для Windows, кто за каким компьютером работает.

Для решения этой задачи были перепробованы разные методики:

  • именование машин по именам пользователей (нудно. Через пару месяцев начинаешь забывать переименовать компьютер, и система катится в хаос)
  • строгий учет кому куда можно ходить где нибудь в отдельном Excel и установка прав на логон только на конкретную машину и т.д. (чистой воды паранойя, была у одного из клиентов. ОЧЕНЬ нудно и муторно)
  • Использование сторонних утилит от bginfo и psloggedon от Sysinternals, до всевозможных Hyena и Ideal Administrator (большая часть стоит денег, не всегда корректно работают, или слишком открытые, например в случае с BgInfo на рабочем столе становится видна информация, которую не хотелось бы чтобы видели абсолютно все. Возможно это паранойя – но не хочется чтобы толпы неизвестных людей в отделе продаж или на ресепшне узнали внутреннее имя компьютера, пользователя, IP и т.п. просто взглянув на экран.

В результате, мы «построили свой лунапарк с VBS и пользователями«, и написали 2 небольших логон-логоф скрипта, которые запускаются групповой политикой на уровне всего домена при входе пользователя в систему, и при выходе из нее соответственно.

ЛОГОН-Вариант

Dim adsinfo, ThisComp, oUser

' Определяем объекты
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)

' Заносим данные в AD
' В поле Department компьютера пишем имя пользователя, и время входа
Thiscomp.put "Department", "Logged on: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo

'В поле Department учетки пользователя пишем имя компьютера и время входа
oUser.put "Department", "Logged on: " + ThisComp.cn + " " + CStr(Now)
oUser.Setinfo 
wscript.quit

ЛОГОФФ-Вариант

Dim adsinfo, ThisComp, oUser

' Определяем объекты
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)

' Заносим данные в AD 
' В поле Department компьютера пишем имя пользователя, и время входа
Thiscomp.put "Department", "Logged off: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo

'В поле Department пользователя пишем имя компьютера и время входа
oUser.put "Department", "Logged off: " + ThisComp.cn + " " + CStr(Now)
oUser.Setinfo 
wscript.quit

Пояснения по коду наверное не нужны, скрипт элементарен, расскажу лишь про плюсы скрипта которые в моей ситуации значительно перевесили минусы (о которых тоже расскажу).

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