Полезные советы для владельцев Active Directory №1

Не буду углубляться в технические тонкости настройки AD - этому посвящено множество отличных статей.

Попробую рассказать о своем опыте использования этого инструмента.

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

В моем случае, сравнительно большая информационная система с 3000 рабочих мест, в процессе эксплуатации, потребовала настройки автоматической записи данных в AD. Автоматизация реализована на скриптах Powershell версии 3 запускаемых либо групповой политикой при входе пользователя в систему, либо на выделенном сервере через планировщик заданий.

Скрипт №1 запускается при входе пользователя в систему.

# получаем дату, время и форматируем их в привычный вид

$GetDate = Get-Date
$DateAdObjSet = "{0:dd.MM.yyyy HH:mm:ss}" -f $GetDate

# получаем имя пользователя от имени которого запущен текущий скрипт, от использования $env:username отказался - по непонятным причинам изредка возвращает пустые значения

$CurrentPS = (gwmi -class win32_process|?{$_.processid -eq $pid}).getowner()
$USERNAME = $CurrentPS.User

# получаем имя компьютера на котором выполнен вход и имя домена

$USERDNSDOMAIN = $env:USERDNSDOMAIN
$COMPUTERNAME = $env:COMPUTERNAME

# получаем версию Powershell, так как все скрипты реализованы на версии 3, нужно иметь возможность выборки рабочих станций с более старыми версиями

$PSver = 'PS'+$Host.Version.Major.ToString()

# получаем через WMI данные о серийном номере, производителе, модели (доступность данных зависит от производителя ПК)

$Bios_SN = gwmi Win32_BIOS | select -ExpandProperty SerialNumber
$CompSys = gwmi Win32_ComputerSystem
$CompSys_Man = $CompSys.Manufacturer
$CompSys_Mod = $CompSys.Model

# получаем MAC сетевого ethetnet адаптера, считаем, что на компьютере установлена одна сетевая карта

$CompMAC = (gwmi win32_NetworkAdapter | ? { $_.AdapterType -match "802.3" }).MACAddress

#получаем учетные записи и группы включенные в группу локальных администраторов

$objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
$group=($objSID.Translate( [System.Security.Principal.NTAccount])).value.split("\")[1]
$de=[ADSI]"WinNT://./$group"
$localadmins=$de.psbase.invoke("Members")|foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
 

#формируем строку описания

$Description = "$USERNAME;$DateAdObjSet;$CompSys_Man;$CompSys_Mod;$Bios_SN;$PSver;$CompMAC"

#находим в AD учетную запись компьютера на котором выполнен вход

$USERDNSDOMAIN_DN = 'DC=' + $USERDNSDOMAIN -split "\." -join ',DC='
$Root = [ADSI]"LDAP://$USERDNSDOMAIN/$USERDNSDOMAIN_DN"
$SearchPC = new-object System.DirectoryServices.DirectorySearcher($Root)
$SearchPC.filter = "(Name=$COMPUTERNAME)"
$COMPUTER_DN = $SearchPC.FindAll() | select -ExpandProperty Path
$objComputer = [ADSI]$COMPUTER_DN

#сохраняем атрибуты в AD

$objComputer.put("Description",$Description)
$objComputer.PutEx(2,"carLicense",$localadmins)
$objComputer.SetInfo()

# завершаем скрипт

exit

В результате для каждой учетной записи компьютера атрибут AD description будет иметь вид

PetrovNM;20.07.2015 09:08:01;Hewlett-Packard;HP Compaq Pro 6305 SFF;CZC552685B;PS3;D4:C9:EE:EF:31:77

а атрибут carLicense будет хранить список учетных записей включенных в локальную группу Администраторы, группа может называться как угодно, в скрипте она идентифицируется не по имени, а по SID.

продолжение следует

Добавить комментарий.

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.