The Magician

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
работа_с_внешними_контактами [2026/08/19 08:07] – created jpработа_с_внешними_контактами [2026/08/19 08:33] (current) jp
Line 1: Line 1:
 ===== Работа с внешними контактами ===== ===== Работа с внешними контактами =====
  
-Внешние контакты в //Exchange// - это отдельные объекты /AD// без внутреннего логина. Данные контакты могут иметь адреса электронной почты, которые в целом в рамках //Exchange//-сервера будут восприниматься как ВНЕШНИЕ пользователи. +Внешние контакты в //Exchange// - это отдельные объекты //AD// без внутреннего логина. Данные контакты могут иметь адреса электронной почты, которые в целом в рамках //Exchange//-сервера будут восприниматься как ВНЕШНИЕ пользователи. 
  
-К примеру, ничего не мешает добавить эти учётные записи с типом "контакт" в группу рассылки. Если группа рассылки разрешает получение почты только от отправителей в рамках организации, то письма, полученные от контактов, добавленных в группу приниматься сервером не будут. +К примеру, ничего не мешает добавить эти учётные записи с типом "контакт" в группу рассылки. Однако в случае, если группа рассылки разрешает получение почты только от отправителей в рамках организации, то письма, полученные от контактов, добавленных в группуприниматься сервером не будут. Если нам необходимо изменить это поведение, то политику отправки группы рассылки необходимо пересмотреть.   
 + 
 +==== Автоматизация создания большого количества контактов из CSV ==== 
 + 
 +Если нам требуется массово создать большое количество контактов в AD, то автоматизировать процесс не слишком сложно. Представим, что у нас есть CSV-файл, содержащий имя, должность и email контактов. 
 + 
 +<code> 
 +name,title,email 
 +Иван Иванов,Менеджер,ivan@example.com 
 +Петр Петров,Директор,petr@example.org 
 +</code> 
 + 
 +Скрипт, который массово создаст контакты из CSV-файла, путь к которому указан в переменной //$CsvPath// в OU, DN которого содержится в //$OU//, будет выглядеть так: 
 + 
 +<code> 
 +$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)" 
 +    } 
 +
 +</code> 
 + 
 +:!: Скрипт необходимо выполнять в //EMS// на сервере //Exchange//
 + 
 +Теперь мы можем массово добавить созданные контакты в какую-либо группу рассылки: 
 + 
 +<code> 
 +Get-MailContact -OrganizationalUnit "OU=TestContacts,OU=Contacts,DC=domain,DC=local"
 +    ForEach-Object { 
 +        Add-DistributionGroupMember -Identity "TestDistrGroup" -Member $_.Identity 
 +    } 
 +</code> 
 + 
 +Возможно, мы не хотим, чтобы созданные контакты появлялись в глобальной адресной книге //Exchange//. Тогда необходимо массово установить для них соответствующий флаг //HiddenFromAddressListsEnabled//. Сделаем это следующим образом: 
 + 
 +<code> 
 +Get-MailContact -OrganizationalUnit "OU=TestContacts,OU=Contacts,DC=domain,DC=local"
 +    Set-MailContact -HiddenFromAddressListsEnabled $true 
 +</code> 
 + 
 +{{tag>Exchange Microsoft Mail PowerShell ActiveDirectory}}
работа_с_внешними_контактами.1787126848.txt.gz · Last modified: by jp