Set-ADComputer: изменить атрибуты компьютера в Active Directory
При присоединении компьютера к домену Active Directory для него создается отдельная учетная запись типа Computer. У компьютера в AD есть набор обязательных атрибутов:
sAMAccountName
,
distinguishedName
, SID, версия и билд Windows (
operatingSystem
,
operatingSystemVersion
), userAccountControl,
lastLogonTimeStamp
и т.д. В необязательных атрибутах компьютера можно хранить информацию о его владельце, местоположении, описании, IP адресе. В этой статье мы покажем, как изменить значения атрибутов у учетной записи компьютера AD с помощью ADUC и PowerShell.
Изменить свойства компьютера с помощью консоли Active Directory (ADUC)
Администратор может изменить атрибуты компьютер в Active Directory с помощью графической консоли ADUC.
Откройте консоль Active Directory Users and Computers (
dsa.msc
), найдите учетную запись нужного компьютера (как искать объекты в AD) и откройте его свойства. Здесь вы можете задать описание компьютера (поле
Description
), указать местоположение, назначить пользователя, ответственного за это компьютер (
Managed by
).
Вы можете отредактировать значения остальных атрибутов компьютера на вкладке Attribute Editor. Будьте внимательными при редактировании обязательных атрибутов компьютера. Редактор атрибутов объекта в AD не проверяет корректность введенных данных (проверяется только тип данных и длина значения), поэтому при некорректных значения атрибутов компьютера, он может потерять доверительные отношения с доменом.
Изменить значение атрибута компьютера в AD с помощью PowerShell
Командлет Set-ADComputer (из модуля Active Directory для PowerShell) позволяет изменить атрибуты учетной записи компьютера в Active Directory.
Например, вы хотите добавить в свойства компьютера в AD его, название компании и департамента, которому он принадлежит.
Чтобы изменить значение основных атрибутов компьютера, можно использовать встроенные параметры, таки как
-Description
,
-DisplayName
,
-DNSHostName
,
-HomePage
,
-Location
и т.д., Например указать местоположение компьютера:
Set-ADComputer –Identity SRV-MAN01 –Location "Spb/Russia"
Также можно изменить значение любого атрибута с помощью параметров
Add
,
Replace
,
Clear
и
Remove
.
Задать новое описание учетной записи компьютера:
Set-ADComputer -Identity SRV-MAN01 -Add @{"description"="Сервер управления инфраструктурой"}
Если нужно задать несколько параметров компьютера, воспользуйтесь такой конструкцией PowerShell:
$Server = Get-ADComputer -Identity SRV-MAN01
$Server.company = "contoso"
$Server.department = "IT"
Set-ADComputer -Instance $Server
С помощью Get-ADComputer можно получить текущие значения атрибутов:
Get-ADComputer SRV-MAN01 -properties *|select-object dNSHostName,operatingSystem,company,department, description
Теперь вы можете выбрать все компьютеры в AD, которые относятся к департаменту IT компании Contoso:
Get-ADComputer -Filter {(company -eq 'contoso') -and (department -eq "IT")} -properties *|select-object dNSHostName,operatingSystem,company,department,description | ft
С помощью Set-ADComputer вы также можете отключить или включить учетную запись компьютера в AD:
Set-ADComputer srv-man01 -Enabled $false
Как добавить имя пользователя и IP адрес в свойства компьютера в AD?
Вы можете автоматизировать добавление в свойства компьютера определенной информации. Например, вы хотите, чтобы в атрибутах компьютера в AD был указан его текущий IP адрес и имя последнего залогиненого пользователя.
IP адрес компьютера мы будем хранить в атрибуте description, а имя пользователя, который работает за компьютером – в атрибуте ManagedBy.
Делегируйте права группе Domain Users на OU с компьютерами на изменение значений в полях объектов типа Computer: ManagedBy и description (Write Description + Write Managed By).
Теперь создайте новую GPO со следующим 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. Для работы скрипта на компьютерах должен быть установлен модуль AD PowerShell.
В консоли ADUC теперь отображаются IP адреса компьютеров, а в свойствах компьютера на вкладке Managed By теперь есть активная ссылка на учетную запись пользователя, который последним входил на компьютер.
Теперь вы можете быстро найти компьютеры в домене по 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 информацию о модели, серийном номере оборудования.
PowerShell
Set-ADComputer: изменить атрибуты компьютера в Active Directory