The Magician

This is an old revision of the document!


Работа с внешними контактами

Внешние контакты в Exchange - это отдельные объекты AD без внутреннего логина. Данные контакты могут иметь адреса электронной почты, которые в целом в рамках Exchange-сервера будут восприниматься как ВНЕШНИЕ пользователи.

К примеру, ничего не мешает добавить эти учётные записи с типом “контакт” в группу рассылки. Если группа рассылки разрешает получение почты только от отправителей в рамках организации, то письма, полученные от контактов, добавленных в группу, приниматься сервером не будут.

Если нам требуется массово создать большое количество контактов в AD, то автоматизировать процесс не слишком сложно. Представим, что у нас есть CSV-файл, содержащий имя, должность и email контактов.

name,title,email
Иван Иванов,Менеджер,ivan@example.com
Петр Петров,Директор,petr@example.org

Скрипт, который массово создаст контакты из CSV-файла, путь к которому указан в переменной $CsvPath в OU, DN которого содержится в $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)"
    }
}
работа_с_внешними_контактами.1787127903.txt.gz · Last modified: by jp