Мы продолжаем обсуждение команд PowerShell для Active Directory (AD), не просто отыскивающих учетные записи пользователей, соответствующие определенному критерию (так называемые «фильтры»), но и выполняющих определенные действия, например разблокировку учетной записи. Ранее мы познакомились с удобными командами узкой направленности – disable-adaccount, enable-adaccount, unlock-adaccount и clear-ADAccountExpiration. В этой статье я начну рассказывать о set-aduser – замечательном инструменте для настройки учетных записей.

Основной синтаксис set-aduser выглядит следующим образом:

   set-aduser -identity IDinfo  –changeparameters,  

где IDinfo, как и значение параметра –identity команды get-aduser – имя объекта SamAccountName, отличительное имя DN, идентификатор GUID или SID. Ключ -changeparameters обобщенно представляет группу параметров для изменения разных атрибутов AD, таких как имя, описание и т.д. Например, заменить отображаемое имя SamAccountName учетной записи с JulesM на Julie Marsella можно с помощью команды

   set-aduser julesm -displayname  «Julie Marsella»  

Разработчики PowerShell для AD предусмотрели множество относящихся к конкретным атрибутам параметров, таких как -Company, -Givenname, -description и т.д. Поэтому вы, скорее всего, обнаружите у set-aduser готовый встроенный параметр, соответствующий тому, что вы хотите изменить. Большинство из них – простые строки, поэтому одной командой можно сразу изменить целую группу атрибутов, например:

   set-aduser MartinT -description  «Debugger»  -Initials  «R" -surname»Thomas«  

Разработчики PowerShell для AD упростили нашу жизнь в некоторых отношениях. В частности, большинство команд для указания руководителя (значение параметра –manager) требуют вводить полное отличительное DN, но в данном случае это не так. Например, если пользователь JulesM является руководителем пользователя MartinT, то об этом можно сообщить с помощью команды

   set-aduser MartinT -manager JulesM 
   вместо  -manager»cn=julesm,cn=users,dc=bigfirm,dc=com«.  

Кроме того, мы уже знаем, что атрибутом AD, соответствующим фамилии, является sn (сокращение от surname). Мне это всегда казалось странным, поскольку для имени в AD используется атрибут givenname, который прописывается полностью. Почему же вместо surname используется sn? Чтобы упростить нашу задачу, разработчики PowerShell для AD создали «синтетический» атрибут surname вместо sn. Поэтому знаток AD будет удивлен, когда в ответ на команду изменения фамилии

   set-aduser MartinT  -sn»Thomas«  

система выдаст ошибку, тогда как вариант

   set-aduser MartinT  -surname»Thomas«  

отлично сработает. Это не единственный пример «синтетического» атрибута. Вспомним, что LastLogonDate – просто находка, если требуется выявить пользователей, не регистрировавшихся в системе в течение некоторого времени. Адрес электронной почты пользователя внутри AD называется mail, но вам придется вместо -mail использовать –emailaddress, чтобы изменить адрес.

Возникает вопрос: как насчет пользовательских атрибутов AD? Как изменить значение атрибута AD, добавленного сторонним приложением – например, shoesize? На такой случай предусмотрен параметр -replace. Любой произвольный атрибут (или атрибуты) AD можно изменить, используя следующий синтаксис:

   set-aduser identifier -replace  @{attributename=»newvalue«;"attributename=»newvalue«…}  

Например, задать атрибуты userprincipalname и givenname пользователя Martin можно с помощью команды

   set-aduser MartinT -replace  @{userprincipalname=»martint@bigfirm.com«;givenname=»martin«}  

Заметим, что при использовании -replace имена атрибутов должны соответствовать их внутренним значениям в AD (что указывает на выполнение LDAP-запросов), поэтому для того, чтобы изменить адрес электронной почты и руководителя пользователя Martin, придется указать имя атрибута внутри AD (mail) и полное отличительное имя руководителя:

   set-aduser MartinT -replace  @{mail=»martint@bigfirm.com«;manager=»cn=julesm,cn=users,dc=bigfirm,dc=com}  

Очистить любое существующее значение можно с помощью –clear:

   set-aduser MartinT -clear mail 

При использовании -clear также необходимо указывать внутренние имена атрибутов AD, применяемые в LDAP-запросах. Некоторые атрибуты AD (например, othermobile) допускают указание нескольких значений, добавляемых с помощью –add:

   set-aduser martint -add  @{othermobile=«+1724333-5544»}  

Можно добавить столько телефонных номеров, сколько требуется, и все эти номера будут храниться в AD. Вывести их для просмотра можно с помощью команды get-aduser:

   get-aduser martint -pr othermobile | select othermobile 

Группу команд -replace, -clear и -add дополняет команда -remove, удаляющая элемент из списка. Например, удалить первый номер телефона пользователя Martin из списка othermobile можно с помощью команды

   set-aduser martint -remove  @{othermobile=«+1724333-5545»}  

При этом set-aduser не пытается анализировать значения атрибутов AD, но лишь обеспечивает гибкие возможности их изменения. Обсуждение этой темы мы продолжим в следующий раз.