В описании объектов типа “Компьютер” в Active Directory можно хранить различную полезную информацию. Например, информацию о модели компьютера или имя пользователя, который работает на этом компьютере. В этой статье мы рассмотрим, как автоматически добавлять и обновлять информацию в поле Description (Описание) компьютеров в Active Directory с помощью скриптов PoweShell.
Например, вы хотите, чтобы в поле Description (Описание) компьютеров и серверов в консоли Active Directory Users and Computers отображалась информация о производителе компьютера, его модели и серийном номере. Эту информацию можно получить простым WMI запросом с помощью следующей команды PowerShell:
Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber
Запрос возвращает следующие данные:
Теперь нужно сохранить эти данные в поле Description этого компьютера в AD.
Получим имя текущего компьютера из переменной окружения и присвоим его переменной $computer
:
$computer = $env:COMPUTERNAME
Затем в следующие переменные сохраним нужные нам данные компьютера:
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
Посмотрим, какие значения присвоены переменным:
$computer
$vendor
$Model
$SerialNumber
Осталось записать полученные данные в поле Description учетной записи компьютера в Active Directory. Выполните такой PowerShell скрипт:
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($ENV:USERDNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor | $Model | $SerialNumber" )
$computerObj.SetInfo()
Проверьте, что в поле Описание компьютера в консоли AD появились данные о производителе и модели.
Такой скрипт обновит данные в AD только для одного компьютера. Можно удаленно заполнить данные для всех компьютеров в домене с помощью Get-ADComputer и цикла foreach, но гораздо удобнее чтобы компьютеры автоматически при загрузке обновляли свою информацию в AD.
Для этого нужно создать групповую политику с PowerShell логон скриптом и назначить ее на все компьютеры:
$computer = $env:COMPUTERNAME
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
$DNSDOMAIN= (Get-WmiObject -Namespace rootcimv2 -Class Win32_ComputerSystem).Domain
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($DNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()
FillCompDesc.ps1
-ExecutionPolicy Bypass
Таким образом вы можете внести в поле Описание компьютера в AD любую информацию. Например, имя последнего пользователя, название структурного подразделения (эти данные можно получить с помощью командлета Get-ADUser ), IP адрес компьютера или любую другую нужную вам информацию.
Рассмотренный выше скрипт можно использовать для добавления любой другой информации в описание компьютера в AD. Например, удобно когда в описании компьютера указан текущий пользователь, выполнивший вход. Также добавим имя контроллера домена, на которым выполнена аутентификация (LOGONSERVER).
Измените в логон скрипте PowerShell строку на:
$computerObj.Put("Description","$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")
Выполните логофф/логон и проверьте, что теперь в описании компьютера показывается имя текущего пользователя и контроллер домена, через который выполнен вход.
Чтобы разобрать данные из атрибута Description можно использовать такой PowerShell код:
$ComputerName = 'WKS-PC11S22'
$vendor,$Model,$SerialNumber,$Username,$LogonServer = ((Get-ADComputer -identity $ComputerName -Properties *).description).split("|")
Мы сохранили каждое из значений поля Description (разделенные |
) в отдельную переменную. Чтобы вывести имя пользователя на указанном компьютере , достаточно выполнить:
$Username
А чтобы найти компьютера домена, на которым сейчас залогинен определенный пользователь, можно использовать такой PowerShell скрипт:
$user='*kbuldogov*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft
Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…
Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…
Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…
The AC power adapter wattage and type cannot be determined — причины и решение При…
Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…
Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…