У цій статті ми продемонструємо техніку заповнення даних комп'ютерів в 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
Змінної $ 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 адреса комп'ютера або будь-яку іншу необхідну інформацію.