Exchange 2010 — Импорт внешних контактов (CSV)

Потребовалось импортировать большую базу клиентов на сервер для распределения по группам рассылок для Департамента маркетинга.

Подготавливаем csv-файлик с header-ом:

DisplayName,OrganizationalUnit,EmailAddress

Пример файла:

DisplayName,OrganizationalUnit,EmailAddress
bc-0000000000000007,domain.local/Service Accounts/Marketing/BonusCards/ALL,bc-0000000000000019@mail.ru
bc-0000000000000006,domain.local/Service Accounts/Marketing/BonusCards/ALL,bc-0000000000000006@mail.ru
bc-0000000000000005,domain.local/Service Accounts/Marketing/BonusCards/ALL,bc-0000000000000005@mail.ru

Проверить файл можно вот так:

import-csv "c:\DB_BC_CSV\bc.csv" | select DisplayName,OrganizationalUnit,EmailAddress
[PS] C:\Windows\system32>import-csv "c:\DB_BC_CSV\bc1.csv" | select DisplayName,OrganizationalUnit,EmailAddress

DisplayName                             OrganizationalUnit                      EmailAddress
-----------                             ------------------                      ------------
bc-0000000000000007                     domain.local/Service Accounts/Marketing... bc-0000000000000019@mail.ru
bc-0000000000000006                     domain.local/Service Accounts/Marketing... bc-0000000000000006@mail.ru
bc-0000000000000005                     domain.local/Service Accounts/Marketing... bc-0000000000000005@mail.ru

Если все хорошо идем дальше , проблема может быть в кодировке файла должен быть Unicode

Делаем импорт

[PS] C:\Windows\system32>Import-csv c:\DB_BC_CSV\bc1.csv | ForEach-Object {New-MailContact -Name $_.DisplayName -ExternalEmailAddress $_.EmailAddress -OrganizationalUnit $_.OrganizationalUnit | Set-MailContact -HiddenFromAddressListsEnabled $true}

Name                      Alias                                          RecipientType
----                      -----                                          -------------
bc-0000000000000007       bc-0000000000000007                            MailContact
bc-0000000000000006       bc-0000000000000006                            MailContact
bc-0000000000000005       bc-0000000000000005                            MailContact

upd.

Import-csv c:\dbbc.csv | ForEach-Object {
$mailcontact=Get-MailContact -Identity $_.Name |select First 1
if ($mailcontact count -eq 0) {
New-MailContact -Name $_.Name -ExternalEmailAddress
$_.EmailAddress -OrganizationalUnit $_.OrganizationalUnit
else { Set-MailContact -Identity $_.Name -PrimarySmtpAddress $_.EmailAddress  }
}