Объяснение Set-ADUser - Как изменять пользователей AD с помощью PowerShell
Необходимо обновить несколько пользователей в вашей Active Directory? Или ищете более эффективный способ изменения свойств пользователей? Тогда команда Set-ADuser в PowerShell действительно поможет вам.
Мы все научились управлять нашими пользователями через консоль управления Active Directory Пользователи и Компьютеры (ADUC). Она идеально подходит для быстрого внесения изменений для одного пользователя. Но когда вам нужно обновить свойства нескольких пользователей в разных OU, использование PowerShell гораздо эффективнее.
В этой статье мы рассмотрим, как использовать cmdlet Set-ADuser. Какие у нас есть варианты, и я приведу несколько полезных примеров.
Модуль Active Directory для PowerShell
Прежде чем мы сможем начать, нам сначала нужно убедиться, что у нас установлен модуль Active Directory для PowerShell. Чтобы проверить, установлен ли модуль, вы можете просто выполнить следующую команду в PowerShell:
Get-Module -name ActiveDirectory
Result:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0.0.0 ActiveDirectory {Add-ADCentralAccessPolicyMember, Add-ADComputerServiceAccount, Add-A...Если модуль не указан, то нам нужно установить модуль RSAT (удаленное управление сервером). Используйте следующую команду PowerShell для этого:
Install-WindowsFeature RSAT-AD-PowerShell
Модуль автоматически устанавливается на контроллере домена.
Установите модуль Active Directory PowerShell на Windows 10
Но на Windows 10 или 11 нам нужно включить компонент RSAT. Вместо того чтобы щелкать по экранам настроек, мы собираемся использовать PowerShell для этого:
- Нажмите Клавишу Windows + X (или щелкните правой кнопкой мыши на меню 'Пуск')
- Откройте Windows PowerShell (Admin)
- Введите следующую команду:
Add-WindowsCapability -online -Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”Использование команды Set-ADUser
С помощью командлета Set-ADUser мы можем изменять все свойства пользователя Active Directory. Для этого мы можем использовать один из параметров командлета или использовать параметры Add, Update, Replace. Все параметры Set-ADUser перечислены здесь в документации Microsoft.
Допустим, мы хотим изменить должность нашего пользователя Алана Роудса. Его текущая должность — сотрудник, и мы собираемся изменить её на управляющего этажом.
Set-ADUser -Identity arhodes -Title "Floor manager"Мы выбираем пользователя на основе имени пользователя (идентификатора) и устанавливаем должность Менеджер этажа. Как вы можете видеть на скриншоте ниже, команда Set-ADUser не выводит никаких данных.
Но мы можем просто проверить результаты в PowerShell с помощью Get-ADUser
Установить несколько атрибутов
Мы также можем изменить или задать несколько атрибутов одновременно. Скажем, мы также хотим обновить телефонный номер, офис и отдел Алана.
Set-ADUser -Identity arhodes -OfficePhone "(012)-157-8923" -Office "A3.20" -Department OperationsОчистить атрибуты пользователя AD
Иногда нужно удалить или очистить атрибут. Для этого необходимо использовать параметр clear, который удалит содержимое всех выбранных полей. Если мы хотим удалить мобильный телефон, мы можем сделать следующее:
Set-ADUser -identity arhodes -Clear mobileИли для очистки нескольких атрибутов AD вы можете использовать
Set-ADUser -identity arhodes -Clear mobile,title,departmentДобавление и удаление атрибутов с помощью Set-ADUser
Некоторые атрибуты могут содержать несколько значений, таких как ProxyAddress или otherTelephone, например. Чтобы задать или обновить значения в этих атрибутах, мы можем использовать параметры Add и Remove в Set-ADUser.
Вы можете установить несколько значений, используя список, разделенный запятыми:
Set-ADUser -Identity arhodes -Add @{proxyAddresses="alan@a-d.site","rhodes@a-d.site"}Чтобы удалить одно значение из списка, мы просто можем указать, какое значение мы хотим удалить:
Set-ADUser -Identity arhodes -Remove @{proxyAddresses="rhodes@a-d.site"}Отключение учетной записи Active Directory с помощью Set-ADUser
Мы также можем использовать командлет Set-ADuser для включения или отключения учетной записи в Active Directory. Параметр enabled имеет логический тип, поэтому мы можем установить его в true или false.
Чтобы отключить пользователя в вашей Active Directory, вы можете использовать следующую команду:
Disable a user
Set-ADUser -identity cparker -Enabled:$false
Enable a user
Set-ADUser -identity cparker -Enabled:$falseМассовое обновление пользователей AD
До сих пор мы обновляли только одного пользователя с помощью PowerShell, но настоящая сила cmdlet Set-ADUser заключается в массовом обновлении пользователей AD. Изменение атрибута у одного пользователя также можно легко сделать через консоль управления.
Но как вы изменяете менеджера у 10 пользователей или обновляете адрес компании для всех ваших пользователей? Для этого мы будем использовать командлеты Get-ADUser вместе с Set-ADUser. Get позволяет нам фильтровать пользователей, а Set позволяет обновлять каждого пользователя в результате.
В первом примере мы назначили Алана Роудса менеджером по полу. Итак, давайте дадим ему несколько подчиненных. Мы собираемся выбрать всех пользователей, которые в настоящее время имеют Андре Уэста в качестве менеджера, и изменить это на Алана Роудса.
Get-ADUser -Filter 'manager -eq "awest"' | Set-ADUser -Manager arhodesСначала всегда полезно проверить результаты вашей команды Get-ADUser, прежде чем изменять атрибуты с помощью Set-ADUser.
Фильтр по ОУ
Get-ADUser также позволяет нам фильтровать по OU. Это может быть очень полезно, когда у вас много пользователей и вы хотите ограничить результаты или когда вам нужно только выбрать часть пользователей.
Допустим, наш отдел маркетинга собирается переехать в другой офис. Мы не можем просто выбрать пользователей на основе адреса офиса, потому что нам нужен только отдел маркетинга. Поэтому мы можем сделать следующее:
Get-ADUser -Filter 'city -eq "Amsterdam"' -SearchBase "OU=Marketing,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | Set-ADUser -StreetAddress "Westerdok 1" -PostalCode "2312ab"Используйте список CSV для обновления пользователей
Еще один отличный способ массового обновления пользователей в вашей Active Directory — это использование списка CSV. Преимущество CSV-файла заключается в том, что вы можете установить разные значения для каждого пользователя, воспользовавшись удобством файла Excel.
Я создал в Excel простой CSV-файл, в первом столбце содержатся имена пользователей, а во втором и третьем столбцах — их новые телефонные номера. Просто сохраните файл Excel в формате CSV.
Name;MobilePhone;OfficePhone
Bob Davis;(732)-016-9810;(933)-701-6542
Erik Parker;(732)-016-9720;(933)-701-6543
Jean Miles;(732)-016-9821;(933)-701-6544
Kelly Rice;(732)-016-9813;(933)-701-6545
Mathew Scott;(732)-016-9620;(933)-701-6546
Oscar May;(732)-016-9851;(933)-701-6547
Regina Clark;(732)-016-9811;(933)-701-6548Теперь мы можем создать небольшой скрипт PowerShell, который будет читать CSV-файл, находить каждого пользователя и обновлять атрибуты с правильным значением:
Import-Csv -Delimiter ";" -Path c:\temp\PhoneNumberUpdate.csv | Foreach {
# Find user
$ADUser = Get-ADUser -Filter "name -eq '$($_.name)'"
if ($ADUser){
Set-ADUser -Identity $ADUser -MobilePhone $_.MobilePhone -OfficePhone $_.OfficePhone
}else{
Write-Warning ("Failed to update " + $($_.name))
}
}Используя параметр Instance
Распространенной проблемой при импорте данных из CSV-файла являются нулевые значения. Возьмем приведенный выше пример, не у всех пользователей может быть номер мобильного телефона. Если мы запустим скрипт, используя вышеуказанный метод, мы получим ошибку, потому что некоторые поля не содержат значения. Чтобы решить эту проблему, мы можем использовать параметр -Instance.
С параметром Instance будут обновлены только измененные значения. Это также позволяет нам обрабатывать пустые значения в CSV файле. Я изменил пример CSV, удалив некоторые номера (мобильных) телефонов:
Name;MobilePhone;OfficePhone
Bob Davis;(732)-016-9810;(933)-701-6542
Erik Parker;;(933)-701-6543
Jean Miles;;(933)-701-6544
Kelly Rice;(732)-016-9813;(933)-701-6545
Mathew Scott;(732)-016-9620;
Oscar May;;(933)-701-6547
Regina Clark;(732)-016-9811;(933)-701-6548Чтобы обновить поля, сначала мы получаем пользователя с необходимыми свойствами, затем устанавливаем новые значения и обновляем пользователя с помощью Set-ADUser. Если поле пусто в файле CSV, то мы его пропустим. Имейте в виду, что этот метод не очищает значение в Active Directory.
Import-Csv -Delimiter ";" -Path c:\temp\PhoneNumberUpdate.csv | Foreach {
# Find user
$ADUser = Get-ADUser -Filter "name -eq '$($_.name)'" -Properties MobilePhone,OfficePhone
if ($ADUser){
if ($_.MobilePhone) {$ADUser.MobilePhone = $_.MobilePhone}
if ($_.OfficePhone) {$ADUser.OfficePhone= $_.OfficePhone}
Set-ADUser -Instance $ADUser
}else{
Write-Warning ("Failed to update " + $($_.name))
}
}В этой статье я подробно рассказываю о том, как использовать файл CSV для обновления атрибутов пользователей в Active Directory.
Завершение
Командлет Set-ADUser позволяет очень легко обновлять атрибуты нескольких пользователей в вашей Active Directory. Всегда убедитесь, что вы проверили свои фильтры с помощью Get-ADUser сначала или с использованием параметра whatif.
Если у вас есть вопросы, просто оставьте комментарий ниже.


