This is an old revision of the document!
Работа с внешними контактами
Внешние контакты в Exchange - это отдельные объекты AD без внутреннего логина. Данные контакты могут иметь адреса электронной почты, которые в целом в рамках Exchange-сервера будут восприниматься как ВНЕШНИЕ пользователи.
К примеру, ничего не мешает добавить эти учётные записи с типом “контакт” в группу рассылки. Однако в случае, если группа рассылки разрешает получение почты только от отправителей в рамках организации, то письма, полученные от контактов, добавленных в группу, приниматься сервером не будут. Если нам необходимо изменить это поведение, то политику отправки группы рассылки необходимо пересмотреть.
Автоматизация создания большого количества контактов из CSV
Если нам требуется массово создать большое количество контактов в AD, то автоматизировать процесс не слишком сложно. Представим, что у нас есть CSV-файл, содержащий имя, должность и email контактов.
name,title,email Иван Иванов,Менеджер,ivan@example.com Петр Петров,Директор,petr@example.org
Скрипт, который массово создаст контакты из CSV-файла, путь к которому указан в переменной $CsvPath в OU, DN которого содержится в $OU, будет выглядеть так:
$CsvPath = "C:\Temp\contacts.csv"
$OU = "OU=TestContacts,OU=Contacts,DC=domain,DC=local"
$Contacts = Import-Csv -Path $CsvPath -Delimiter "," -Encoding UTF8
foreach ($Contact in $Contacts) {
if ([string]::IsNullOrWhiteSpace($Contact.name) -or
[string]::IsNullOrWhiteSpace($Contact.email)) {
Write-Warning "Пропущена запись: отсутствует name или email."
continue
}
$DisplayName = "$($Contact.name.Trim()) (Внешний контакт)"
$Email = $Contact.email.Trim()
$Title = $Contact.title.Trim()
try {
Write-Host "Создание контакта: $DisplayName <$Email>"
New-MailContact `
-Name $DisplayName `
-DisplayName $DisplayName `
-ExternalEmailAddress $Email `
-OrganizationalUnit $OU `
-ErrorAction Stop
if (-not [string]::IsNullOrWhiteSpace($Title)) {
Set-Contact `
-Identity $DisplayName `
-Title $Title `
-ErrorAction Stop
}
Write-Host "Создан: $DisplayName"
}
catch {
Write-Warning "Ошибка при создании '$DisplayName': $($_.Exception.Message)"
}
}
Скрипт необходимо выполнять в EMS на сервере Exchange.
Теперь мы можем массово добавить созданные контакты в какую-либо группу рассылки:
Get-MailContact -OrganizationalUnit "OU=TestContacts,OU=Contacts,DC=domain,DC=local" |
ForEach-Object {
Add-DistributionGroupMember -Identity "TestDistrGroup" -Member $_.Identity
}
Возможно, мы не хотим, чтобы созданные контакты появлялись в глобальной адресной книге Exchange. Тогда необходимо массово установить для них соответствующий флаг HiddenFromAddressListsEnabled. Сделаем это следующим образом:
Get-MailContact -OrganizationalUnit "OU=TestContacts,OU=Contacts,DC=domain,DC=local" |
Set-MailContact -HiddenFromAddressListsEnabled $true
