Заповнюємо опис комп'ютерів в Active Directory

У цій статті ми продемонструємо техніку заповнення даних комп'ютерів в Active Directory за допомогою Poweshell. Як приклад ми покажемо, як зберегти інформацію про модель комп'ютера в поле Description (Опис) об'єктів типу «Комп'ютер» в Active Directory.

Отже, ми хочемо, щоб інформація про виробника комп'ютера, його моделі та серійний номер відображалася в поле Descripion (Опис) комп'ютера в консолі Active Directory Users and Computers. Цю інформацію можна отримати за допомогою такого WMI запиту:

Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber

Запит повертає наступні дані:

  • Виробник (Vendor) - HP
  • Модель (Name) - Proliant DL 360 G5
  • Серійний номер (IdentifyingNumber) - CZJ733xxxx

Тепер потрібно внести ці дані в поле Descripion цього комп'ютера в AD. У цьому нам допоможе модуль ActiveDirectory для Windows PowerShell (Передбачається, що цей модуль вже встановлено з пакета RSAT).

Імпортуємо модуль такою командою:

Import-Module ActiveDirectory

Порада. У Windows Server 2012 і вище модуль ActiveDirectory для PowerShell підключений за замовчуванням і не вимагає імпорту в сесію PoSh.

Змінної $ computer дамо ім'я облікового запису комп'ютера в Active Directory, в яку ми хочемо внести зміни:

$ Computer = "PC-Name-up01"

Потім в наступні змінні запишемо потрібні нам дані комп'ютера:

$ vendor = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .Vendor
$ name = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .Name
$ identifyingNumber = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .identifyingNumber

Подивимося які значення присвоєно змінним:

$ vendor
$ name
$ identifyingNumber

Залишилося записати отримані дані в поле Description облікового запису комп'ютера в Active Directory. У цьому нам допоможе командлет Powershell: Set-ADComputer. Виконаємо таку команду:

Set-ADComputer $ computer -Description "$ vendor: $ name: $ identifyingNumber"

Порада. В даному прикладі команда виконується з правами адміністратора домену. Щоб надати ці повноваження інших облікових записів, потрібно надати їм відповідні права (див. Нижче).

Перевіримо, що в поле Опис нашого комп'ютера в консолі AD з'явилися дані про виробника і моделі системи.

Ми оновили дані в AD тільки для одного комп'ютера. Щоб заповнити дані для всіх комп'ютерів в певному контейнері (OU) в AD, скористаємося Командлети Get-ADComputer і циклом foreach.

Створимо масив, що містить список всіх комп'ютерів в зазначеному OU:
$ Computers = Get-ADComputer -Filter * -searchBase "OU = Computers, DC = winitpro, DC = ru"

Потім за допомогою циклу foreach отримаємо дані кожного комп'ютера через WMI і збережемо їх в Active Directory:

foreach ($ computer in $ computers)

$ Vendor = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .Vendor
$ Name = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .Name
$ IdentifyingNumber = (Get-WMIObject -ComputerName $ computer Win32_ComputerSystemProduct) .IdentifyingNumber
$ vendor
$ name
$ identifyingNumber
Set-ADComputer $ computer -Description "$ vendor: $ name: $ identifyingNumber"

Після виконання скрипта поле Description буде заповнено у всіх комп'ютерів обраного OU Active Directory.

Примітка. Для отримання даних цільові комп'ютери повинні бути включені, а WMI запити по мережі до них не повинні блокуватися.

Розглянутим способом можна організувати автоматичне заповнення поля "Опис" комп'ютера в Active Directory. Найпростіше це реалізувати за допомогою логон-скрипта групової політики, так щоб, при завантаженні комп'ютера ініціювалося оновлення даних в запису AD. Для реалізації такого сценарію доведеться надати для Authenticated Users право Write Description і застосувати його до Descendant Computer Objects.

Примітка. Недолік такого підходу - будь-який авторизований користувач AD може змінити або стерти опис будь-якого комп'ютера в Active Directory.

За допомогою даної методики можна організувати ручне або автоматичне заповнення будь-якого доступного атрибута комп'ютера в Active Directory. Зокрема в поле опис можна записати ім'я поточного користувача, зареєстрованого в системі, і його департамент (ці дані можна отримати за допомогою командлета Get-ADUser), ip адреса комп'ютера або будь-яку іншу необхідну інформацію.