Set-ADUser: изменить атрибуты пользователя в Active Directory из PowerShell

Set-ADUser: изменить атрибуты пользователя в Active Directory из PowerShell

Командлет Set-ADUser позволяет изменить значения свойств (атрибутов) пользователя в Active Directory из PowerShell.Традиционно для изменения параметров пользователей AD используется графическая mmc оснастка Active Directory Users and Computers (ADUC). С помощью этой оснастки вы можете отредактировать свойства пользователя или расширенные атрибуты на вкладке Attribute Editor. Однако в консоли ADUC вы не сможете выполнить операцию массового изменения атрибутов у множества пользователя (частично это возможно с помощью сохранённых запросов). В этой статье мы рассмотрим несколько примеров использования командлета Set-ADUser для редактирования свойств пользователей в AD.

Командлет Set-ADUser входит в состав модуля Active Directory module для Windows PowerShell и требует его установки. В Windows Server модуль устанавливается из компонентов, в Windows 10 нужно установить модуль из RSAT:

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

синтаксис командлета set-aduser

Имя пользователя, свойства которого нужно измененить в 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 “Системный администратор”

set-aduser изменить свойства пользователя в active directory

Можно изменить значения сразу нескольких атрибутов. Например, зададим новый 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:psanovak.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 файл с новыми параметрами пользователей в active directory

Чтобы внести изменения в свойства пользователей из файла, импортируйте CSV файл и внесите изменения такой PowerShell командой:

Import-Csv "C:psmodifyad_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

Это позволит вам быстро найти имя компьютера, на котором в данный момент работает пользователь.

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

В этом примере мы сохраняем адрес текущего компьютера в стандартный атрибут Description (вы можете использовать другой атрибут, например, один из
ExtensionAttribute
).

PowerShell
Set-ADUser: изменить атрибуты пользователя в Active Directory из PowerShell