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:\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 файл с новыми параметрами пользователей в active directory

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

Import-Csv "C:\ps\modifyad_users.csv" | foreach {Set-ADUser -Identity $_.SamAccountName –Title $_.Title -MobilePhone $_.MobilePhone}

Можно делегировать сотруднику отдела кадров права на обновление атрибутов пользователей в AD и даже научить его работать с такими CSV/Excel файлами из PowerShell.

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

В одной из предыдущих статей мы показывали, как добавить информацию о пользователе в свойства компьютера в AD с помощью командлета Set-ADComputer. Рассмотрим другой подход – попробуем записать в свойства пользователя информацию о том, на каком компьютере он залогинен.

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

Set-ADUser -identity $env:UserName –Description $env:computername

Данный скрипт предполагает, что на компьютерах пользователей установлен модуль PowerShell для Active Directory. Если вы не хотите устанавливать RSAT на всех компьютерах, можете использовать модуль AD PowerShell без установки, просто скопировав нужные файлы на все компьютеры через GPO или логон скриптом.

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

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

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

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


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

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

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

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