Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Автоматическое заполнение поле Описание в Active Directory

Рубрика: Администрирование Windows
Метки: |
Четверг, 29 марта 2012 г.
Просмотров: 16510
Подписаться на комментарии по RSS


Любой системный администратор знает о существовании поля Описание у объектов Active Directory. Очень редко какие IT отделы регулярно используют данное поле для чего-либо полезного и поддерживают данную информацию в актуальном состоянии.

Я думаю, что было бы очень полезно для компьютеров иметь в данном поле информацию по последнему залогинному пользователю. С помощью небольших изменений в настройки безопасности AD и простенького скрипта мы выполним данную задачу. Также я добавил в данное поле сервис тэг и номер модели компьютера.

Первое что нам необходимо сделать – разрешить всем прошедшим проверку пользователям изменить данное поле. Необходимо понимать, что после данного изменения любой опытный пользователь может самостоятельно указывать в данном поле любую информацию. Для этого выполним следующее действие:   

  1. Откройте консоль Active Directors Users and Computers
  2. Включите дополнительные возможности (‘Advanced Features’ в меню ‘view’)
  3. Выберите ваш домен, нажмите на него правой кнопкой и зайдите в свойства.
  4. Перейдите на вкладку Безопасность и нажмите кнопку ‘advanced’
  5. Нажмите ‘add’, введите ‘Authenticated Users’ и нажмите OK.
  6. В поле ‘apply to’ выберите ‘Descendant Computer Objects’, затем поставьте чекбокс напротив опции ‘Write Description’

После этого дважды нажмите ‘OK’ и закройте оснастку.

Создайте новый скрипт и внесите в него следующий код:Set WshNetwork = WScript.CreateObject("WScript.Network")

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' get service tag and computer manufacturer 
  
For Each objSMBIOS in objWMI.ExecQuery("Select * from Win32_SystemEnclosure") 
  
serviceTag = replace(objSMBIOS.SerialNumber, ",", ".") 
  
manufacturer = replace(objSMBIOS.Manufacturer, ",", ".") 
  
Next
  
' get computer model 
  
For Each objComputer in objWMI.ExecQuery("Select * from Win32_ComputerSystem") 
  
model = trim(replace(objComputer.Model, ",", ".")) 
  
Next
  
' get computer object in AD 
  
Set objSysInfo = CreateObject("ADSystemInfo") 
  
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)
  
' build up description field data and save into computer object 
    
objComputer.Description = WshNetwork.UserName & " (" & serviceTag & " - " & manufacturer & " " & model & ")" 
    
objComputer.SetInfo

Последнее что необходимо сделать это добавить данный скрипт в запуск при логине пользователя. Проще всего это сделать через групповые политики. Для этого создайте новую групповую политику и добавьте ваш скрипт в раздел User configuration > Policies > Windows Settings > Scripts > Logon. После создания GPO залогиньтесь на какой либо компьютер и проверьте, что поле Описание автоматически заполнилось.

 

 

Полезная информация

Заколебался!! На моем опеле второй раз с интервалом в один год летит АКПП. Поэтому сейчас смотрю на новые авто. Пока остановлися на Kia Ceed - очень нравится как по дизайну, так и по характеристикам.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 10

  1. Александр | 2012-04-20 в 15:55:43

    Спасибо за статью!

    Простите, а скрипт написан на чём? Какое должно быть разрешение файла?

  2. Я сделал с именем на .VBS - все работает.

    Проблема в том, что когда большинство компьютеров - самосборка, он пишет кучу пробелов :( Буду перепиливать под себя

  3. Я себе добавил более полезную информацию: Login: ; IP: ; Time:

    Вот кусок скрипта:

    'Пишем в AD имя залогиненного в ПК + ip
    '=========================================================================
    Dim adsinfo, ThisComp, oUser, ips,ipadr,WSHShell
    Set adsinfo = CreateObject("adsysteminfo")
    Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
    Set oUser = GetObject("LDAP://" & adsinfo.UserName)
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     
    Set IPConfigSet = objWMIService.ExecQuery _
        ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
     
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then  
       ipadr=IPConfig.IPAddress(i)
            For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                ips=ips+" "+IPConfig.IPAddress(i)
            Next
        End If
    Next
    Thiscomp.put "description", "Login: " + oUser.cn + "; IP: "+ ips+"; "+ "Time: " + CStr(Now)
    ThisComp.Setinfo
  4. Даниял | 2012-05-04 в 12:36:34

    Куда этот кусок вставить?

  5. Даниял, это vbs logon-скрипт

  6. Даниял | 2012-05-22 в 13:36:52

    Павел, вопрос такой, как им пользоваться? первый скрипт работает, а вот ваш не могу никак запустить.

  7. Алексей | 2012-06-26 в 14:17:13

    Подскажите пожалуйста как в русскоязычной редакции может называться этот параметр "‘Descendant Computer Objects’" не могу никак найти заранее благодарен

  8. 'Пишем в AD логин пользователя в ПК + ip + mac + время последнего входа
    'для работы требуется дать возможность записывать в поле Description всем прошедшим проверку (Authenticated Users)
    'Откройте консоль Active Directors Users and Computers
    'Включите дополнительные возможности (‘Advanced Features’ в меню ‘view’)
    'Выберите ваш домен, нажмите на него правой кнопкой и зайдите в свойства.
    'Перейдите на вкладку Безопасность и нажмите кнопку ‘advanced’
    'Нажмите ‘add’, введите ‘Authenticated Users’ и нажмите OK.
    'В поле ‘apply to’ выберите ‘Descendant Computer Objects’, затем поставьте чекбокс напротив опции ‘Write Description’
    Dim adsinfo, ThisComp, oUser, ips, WSHShell 
    strComputer = "."
    Set adsinfo = CreateObject("adsysteminfo") 
    Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
    'Вывод имени пользователя в формате ФИО, указать в Thiscomp.put параметр + oUser+ 
    'Set oUser = GetObject("LDAP://" & adsinfo.UserName)
    'Вывод логина
    Set WshNetwork = WScript.CreateObject("WScript.Network") 
      
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery _
        ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
     
        If Not IsNull(IPConfig.IPAddress) Then  
                For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                ips=ips+" "+IPConfig.IPAddress(i)
            Next
        End If
    Next
    Thiscomp.put "description", "Login: " + WshNetwork.UserName +"; IP: "+ ips+"; "+ "Time: " + CStr(Now) 
    ThisComp.Setinfo

    Переделал немного скрипт, выводит логин, ип и время, при желании можно заменить вывод логина на имя пользователя н или и то и другое, мне нужен был логин. Скрипт проверен на win xp, 7, 8.

  9. Аноним | 2013-02-25 в 18:55:25

    Добрый день Коллеги! А возможно ли поправить скрипт , так что бы IP адрес был без MAC адреса. Буду очень благодарен!! Я пользуюсь этим скриптом очень удобный! Теперь можно отслеживать для начальства за всеми!))

  10. Привет всем! как заменить запрос adsinfo.UserName, чтобы он выводил не имя пользователя, а его логин в систему? что-то найти не могу никак ...

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

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

(обязательно)