This is an old revision of the document!
Работа с внешними контактами
Внешние контакты в Exchange - это отдельные объекты AD без внутреннего логина. Данные контакты могут иметь адреса электронной почты, которые в целом в рамках Exchange-сервера будут восприниматься как ВНЕШНИЕ пользователи.
К примеру, ничего не мешает добавить эти учётные записи с типом “контакт” в группу рассылки. Если группа рассылки разрешает получение почты только от отправителей в рамках организации, то письма, полученные от контактов, добавленных в группу, приниматься сервером не будут.
Если нам требуется массово создать большое количество контактов в AD, то автоматизировать процесс не слишком сложно. Представим, что у нас есть CSV-файл, содержащий имя, должность и email контактов.
name,title,email Иван Иванов,Менеджер,ivan@example.com Петр Петров,Директор,petr@example.org
Скрипт, который массово создаст контакты в указанном OU будет выглядеть так:
$CsvPath = "C:\Temp\contacts.csv"
$OU = "OU=External 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)"
}
}
