Set-ADComputer: добавляем информацию о пользователе в свойства компьютеров AD

Командлет Set-ADComputer позволяет изменить атрибуты учетной записи компьютера в Active Directory. В этой статье мы покажем, как с помощью логон скриптов и командлета Set-ADComputer записать имя текущего пользователя и IP адрес в свойства компьютера в AD. Такой скрипт может быть полезен, когда вам нужно найти в домене компьютер, за которым работает конкретный пользователь.

Использование Set-ADComputer для изменения атрибутов компьютера в AD

Командлет Set-ADComputer входит в состав модуля Active Directory для PowerShell и требует наличие установленного модуля на компьютере. Рассмотрим как пользоваться командлетом Set-ADComputer. Попробуем добавить в свойства компьютера в AD наименование компании и департамента. Сначала с помощью Get-ADComputer проверим, что указано у конкретного компьютера домена в полях company, department и description.

Get-ADComputer SRV-MAN01 -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto
Get-ADComputer dNSHostName,operatingSystem,company,department, description
Как вы видите, у компьютера не заполнены поля с описанием, названием компании и департаментом.

Попробуем изменить описание компьютера командой:

Set-ADComputer -Identity SRV-MAN01 -Add @{"description"="Сервер управления инфраструктурой"}

Можно указать местоположение компьютера:

Set-ADComputer –Identity SRV-MAN01–Location “Spb/Russia”

Если нужно задать несколько параметров компьютера, воспользуйтесь такой конуструкцией PowerShell:

$Server = Get-ADComputer -Identity SRV-MAN01
$Server.company = "contoso"
$Server.department = "IT"

Set-ADComputer -Instance $Server

Проверим, что атрибуты компьютера изменились:

Get-ADComputer SRV-MAN01 -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto

Set-ADComputer изменить свойства компьютера в AD

Как вы видите, теперь в атрибутах компьютера содержится нужная нам информация. Теперь мы можем выбирать компьютеры в AD на основе этих критериев. Например, я хочу выбрать все компьютеры департамента IT компании Contoso. Команда для выборки может выглядеть так:

Get-ADComputer -Filter {company -eq 'contoso'–AND department –like ‘IT’} -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto

Командлет Set-ADComputer также позволяет заблокировать (разблокировать)учетную запись компьютера в AD:

Set-ADComputer pc-name -Enabled $false

Set-ADComputer - заблокировать компьютер

Как добавить имя пользователя в свойства компьютера в AD?

Рассмотрим более интересный и полезный пример использования командлета Set-ADComputer. Допустим, вы решили хранить в атрибутах каждого компьютера в Active Directory его текущий IP адрес и имя последнего залогиненого пользователя.

IP адрес компьютера мы будем хранить в атрибуте description, а имя пользователя, который работает за компьютером – в атрибуте ManagedBy.

В первую очередь необходимо делегировать права группе Domain Users (или другой группе безопасности пользователей) на OU с компьютерами на изменение значений в полях объктов типа Computer: ManagedBy и description (Write Description + Write Managed By).

делегирование прав Write Description + Write Managed By в AD на компьютеры

Теперь создаем новую политику со следующим Logon скриптом PowerShell (User Configuration -> Policies -> Windows Settings -> Scripts -> Logon), который должен запускаться при входе пользователя в систему:

$curhostname=$env:computername
$env:HostIP = (
Get-NetIPConfiguration |
Where-Object {

$_.IPv4DefaultGateway -ne $null -and
$_.NetAdapter.Status -ne "Disconnected"
}
).IPv4Address.IPAddress
$currus_cn=(get-aduser $env:UserName -properties *).DistinguishedName
$ADComp = Get-ADComputer -Identity $curhostname
$ADComp.ManagedBy = $currus_cn
$ADComp.description = $env:HostIP
Set-ADComputer -Instance $ADComp

Данный PowerShell скрипт запускается под пользователем, определяет имя и IP адрес текущего компьютера, CN пользователя и сохраняет их в учетной записи компьютера в AD.

Эту политику нужно прилинковать на контейнер с компьютерами и включить замыкание групповой политики Configure user Group Policy Loopback Processing mode (см. здесь).

Теперь при входе пользователя в систему на компьютере отрабатывает данный скрипт и обновляет описание компьютера в AD.

В консоли ADUC теперь отображаются IP адреса компьютеров, а в свойствах компьютера на вкладке Managed By теперь есть активная ссылка на учетную запись пользователя, который последним регистрировался на данном компьютере.

имя пользователя в свойствах компьютера ad

Теперь вы можете быстро найти компьютеры в домене по IP адресу:

get-adcomputer -filter {description -like "10.10.1.*"} -properties *|select name,description,managedBy

Или можно найти все компьютеры в домене, на которых залогинен конкретный пользователь (командлет Get-AdUser испоьзуется для получения DistinguishedName пользователя):

$user='daivanov'
$user_cn=(get-aduser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft

поиск компьютеров в ad по имени пользователя

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

Похожий сценарий с хранением информации о модели, серийном номере сервера в AD рассмотрен в следующей статье.

Предыдущая статья Следующая статья


Комментариев: 14 Оставить комментарий

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)