Подробный гайд: Массовое изменение почты у группы пользователей в Active Directory
Ниже представлены три основных способа изменения атрибута электронной почты (mail / EmailAddress) у множества пользователей в AD.
Способ 1: Через PowerShell с использованием CSV-файла (Рекомендуемый)
Этот метод даёт максимальный контроль и подходит для сложных сценариев.
Шаг 1: Подготовка CSV-файла
Создайте файл users_email.csv со следующей структурой:
SamAccountName,mail
ivanov,ivanov@company.ru
petrov,petrov@company.ru
sidorov,sidorov@company.ru
Важно:
заголовок SamAccountName должен точно совпадать с логином пользователя в домене.
Шаг 2: Запуск скрипта в PowerShell
# Импорт модуля AD (если не загружен)
Import-Module ActiveDirectory
# Массовое обновление атрибута mail
Import-Csv "C:\scripts\users_email.csv" | ForEach-Object {
Set-ADUser -Identity $_.SamAccountName -Replace @{mail=$_.mail}
Write-Host "Обновлено: $($_.SamAccountName) -> $($_.mail)"
}
Дополнительные параметры:
| Параметр | Описание |
|---|---|
-Replace @{mail="..."} |
Заменяет значение атрибута mail |
-EmailAddress "..." |
Альтернативный способ (работает с EmailAddress, а не mail) |
-Add @{ProxyAddresses="smtp:..."} |
Добавляет SMTP-алиас для Exchange |
-Clear mail |
Очищает атрибут почты |
Важно:
Атрибут mail в AD не равен EmailAddress в Exchange. Для синхронизации с Exchange/Office 365 может потребоваться изменение обоих.
Способ 2: Массовое изменение по шаблону (без CSV)
Если нужно задать почту по единому правилу (например, логин@domain.com):
# Обновить почту всем пользователям в конкретном OU
$OU = "OU=Сотрудники,DC=company,DC=local"
$Domain = "company.ru"
Get-ADUser -Filter * -SearchBase $OU | ForEach-Object {
$NewEmail = "$($_.SamAccountName)@$Domain"
Set-ADUser -Identity $_ -Replace @{mail=$NewEmail}
Write-Host "$($_.Name) -> $NewEmail"
}
Полезные фильтры:
# Только пользователи с пустым mail
Get-ADUser -Filter {mail -notlike "*"} -SearchBase $OU
# Исключить отключённые учётки
Get-ADUser -Filter {Enabled -eq $true} -SearchBase $OU
Способ 3: Через графический интерфейс (ADUC) — для небольших групп
- Откройте Active Directory Users and Computers (dsa.msc)
- Включите расширенные функции: меню View → Advanced Features
- Перейдите в нужное подразделение (OU)
- Выделите нескольких пользователей (Ctrl+клик или Shift+клик)
- ПКМ → Properties → вкладка Attribute Editor
- Найдите атрибут
mail→ нажмите Edit → введите значение → OK
Ограничение:
не все атрибуты поддерживают массовое редактирование в интерфейсе. Атрибут mobile, например, нельзя изменить группой.
Проверка и отладка
Просмотр текущего значения почты:
Get-ADUser -Identity ivanov -Properties mail | Select-Object Name, mail
Экспорт всех пользователей с почтой в CSV:
Get-ADUser -Filter * -Properties mail, EmailAddress |
Select-Object Name, SamAccountName, mail, EmailAddress |
Export-Csv "C:\temp\ad_emails.csv" -Encoding UTF8 -NoTypeInformation
Тестовый запуск (без изменений):
# Добавляем -WhatIf для проверки
Set-ADUser -Identity ivanov -Replace @{mail="test@domain.ru"} -WhatIf
Частые ошибки и решения
| Проблема | Решение |
|---|---|
Set-ADUser : The term is not recognized |
Установите модуль: Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 |
| Атрибут не обновляется | Убедитесь, что используете -Replace, а не прямое присваивание. Некоторые атрибуты требуют именно хэш-таблицу |
| Изменения не видны в Exchange | Атрибут mail в AD не синхронизируется автоматически с PrimarySMTPAddress. Для Exchange используйте Enable-MailUser или консоль Exchange |
| Ошибка доступа | Убедитесь, что у вашей учётной записи есть права на запись в атрибут mail (делегирование через Delegation of Control) |
Безопасность и рекомендации
1. Сделайте бэкап перед массовыми изменениями:
Get-ADUser -Filter * -Properties mail | Export-Clixml "C:\backup\ad_users_backup.xml"
- Тестируйте на 1–2 пользователях перед запуском на всех.
- Используйте
-WhatIfи-Confirmдля безопасного выполнения.
4. Логируйте изменения:
Start-Transcript -Path "C:\logs\ad_email_update_$(Get-Date -Format 'yyyyMMdd').log"
# ... ваш скрипт ...
Stop-Transcript
Совет:
Если вы работаете в гибридной среде (AD + Office 365), изменения в атрибуте mail могут быть перезаписаны Azure AD Connect. В этом случае редактируйте почту в облаке или настройте правило синхронизации.