Командлет Set-ADUser позволяет изменить значения свойств (атрибутов) пользователя в Active Directory из PowerShell.Традиционно для изменения параметров пользователей AD используется графическая mmc оснастка Active Directory Users and Computers (ADUC). С помощью этой оснастки вы можете отредактировать свойства пользователя или расширенные атрибуты на вкладке Attribute Editor. Однако в консоли ADUC вы не сможете выполнить операцию массового изменения атрибутов у множества пользователя (частично это возможно с помощью сохранённых запросов). В этой статье мы рассмотрим несколько примеров использования командлета Set-ADUser для редактирования свойств пользователей в AD.
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
Как изменить свойства пользователя в AD с помощью PowerShell?
У командлета Get-ADUser есть около 50 параметров, привязанных к атрибутам AD (City, Company, Department, Description, EmailAddress, MobilePhone, Organization, UserPrincipalName и т.д.). Список доступных для использования атрибутов можно вывести командой:
Get-Help Set-ADUser -Parameter *|ft
Имя пользователя, свойства которого нужно измененить в AD указывается в обязательном параметре Identity (можно указать в виде sAMAccountName, SID, Distinguished Name или objectGUID).
Например, с помощью командлета Get-ADUser получим значение атрибута Title (должность) у пользователя:
get-aduser -Identity a.novak -properties title|select-object name,title
Теперь изменим его должность в AD:
set-aduser a.novak –title “Системный администратор”
Можно изменить значения сразу нескольких атрибутов. Например, зададим новый email адрес и список компьютеров, на которые разрешен вход пользователю:
Set-ADUser a.novak –EmailAddress [email protected] –LogonWorkstations 'msk-PC213,msk-PC165'
Следующая команда отключит учетную запись пользователя в домене:
Set-ADUser a.novak -Enabled $False
Можно изменить фото пользователя в AD:
Set-ADUser a.novak -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\ps\anovak.jpg" -Encoding byte))}
Значения остальных атрибутов пользователя (в том числе extensionAttribute, и кастомных атрибутов) в AD можно изменить с помощью следующих параметров командлета Get-ADUser:
- Add – добавить значение атрибута;
- Replace – заменить значение атрибута;
- Clear – очистить значение атрибута;
- Remove — удалить одно из значений атрибута.
Например, чтобы изменить телефон пользователя, можно использовать команду:
Set-ADUser a.novak -MobilePhone $NewNumber
Или:
Set-ADUser a.novak -replace @{ 'MobilePhone' = $($Number) }
Добавить новое значение в атрибут extensionAttribute10:
Set-ADUser a.novak -Add @{extensionAttribute10 = "Test1"}
Очистить значение атрибута:
Set-ADUser a.novak -Clear "extensionAttribute10"
Можно изменить значение сразу нескольких атрибутов:
Set-ADUser a.novak -Replace @{title="Программист";company="ОАО Копыта"}
Также с помощью этих параметров можно изменить значения мульти-строковых атрибутов. Например, добавим пользователю сразу несколько ProxyAddresses:
Set-ADUser a.novak -add @{ProxyAddresses="smtp:[email protected], ,SMTP:[email protected]" -split ","}
Массовое изменение атрибутов пользователей в AD
Вы можете изменить атрибуты сразу нескольких пользователей. Например, следующая команда изменит значение атрибута UserAccountControl и заставит всех пользователей из указанной OU изменить пароль при следующем входе:
Get-ADUser -Filter * -SearchBase "OU=Users,OU=MSK,DC=winitpro,DC=ru" | Set-ADUser -ChangePasswordAtLogon $true
Можно массово обновить параметры пользователей в AD значениями из CSV файла. Например, у вас есть CSV файл, который содержит список учетных записей, должностей и телефонов (формат файла: SamAccountName, Title, MobilePhone).
Чтобы внести изменения в свойства пользователей из файла, импортируйте CSV файл и внесите изменения такой PowerShell командой:
Import-Csv "C:\ps\modifyad_users.csv" | foreach {Set-ADUser -Identity $_.SamAccountName –Title $_.Title -MobilePhone $_.MobilePhone}
Как сохранить имя компьютера в свойствах пользователя в AD?
В одной из предыдущих статей мы показывали, как добавить информацию о пользователе в свойства компьютера в AD с помощью командлета Set-ADComputer. Рассмотрим другой подход – попробуем записать в свойства пользователя информацию о том, на каком компьютере он залогинен.
Для реализации такой схемы достаточно добавить в логон скрипты GPO следующий PowerShell скрипт, который должен выполнятся при входе пользователя в систему (User Configuration -> Policies -> Windows Settings -> Scripts -> Logon):
Set-ADUser -identity $env:UserName –Description $env:computername
Это позволит вам быстро найти имя компьютера, на котором в данный момент работает пользователь.
ExtensionAttribute
).