Лучший отвечающий
Адресная книга

Вопрос
-
В домене есть два КД.
Все пользователи живут в физической среде AD
Появилась проблема с отсутствующими контактами.
с 2014 года все работало нормально.
И так наш метод
1. Сначала запускаю скрипт Импорта контактов из смежных доменов. Домены мной не управляются, но доступы есть. Данный скрипт запускается один раз в неделю, в субботу в 20:55
Get-ADUser -f * -Properties * -Server DC1 | Select -Property Name,Mail,mobile,telephoneNumber,distinguishedName,manager,sAMAccountName,title,sn,cn,givenName,physicalDeliveryOfficeName,company,description,department | Export-Csv "c:\DC1.csv" -Encoding Unicode Get-ADUser -f * -Properties * -Server DC2 | Select -Property Name,Mail,mobile,telephoneNumber,distinguishedName,manager,sAMAccountName,title,sn,cn,givenName,physicalDeliveryOfficeName,company,description,department | Export-Csv "c:\DC2.csv" -Encoding Unicode Get-ADUser -f * -Properties * -Server DC3 | Select -Property Name,Mail,mobile,telephoneNumber,distinguishedName,manager,sAMAccountName,title,sn,cn,givenName,physicalDeliveryOfficeName,company,description,department | Export-Csv "c:\DC3.csv" -Encoding Unicode
2. Далее запускается скрипт удаления всех контактов в облаке. Данный скрипт запускается один раз в неделю, в субботу в 21:00
##Login Exchange Online PowerShell session $User = "user" $PWord = ConvertTo-SecureString –String "password" –AsPlainText -Force $Credential = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $PWord connect-msolservice -credential $Credential get-msolcontact -Maxresults 5000 | remove-msolcontact -force
3. Каждый день запускается скрипт Импорта
$User = "user" $PWord = ConvertTo-SecureString –String "password" –AsPlainText -Force $Credential = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $PWord $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Credential -Authentication Basic -AllowRedirection Import-PSSession $Session $contacts | ForEach {Set-Contact $_.Mail -Phone $_.telephoneNumber -Mobile $_.Mobile -Company $_.Company -Title $_.Title -Department $_.Department -Office $_.physicalDeliveryOfficeName -FirstName $_.GivenName -LastName $_.sn} Import-Csv C:\DC1.csv|%{New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.Mail -FirstName $_.GivenName -LastName $_.sn} $Contacts = Import-CSV c:\DC2.csv $contacts | ForEach {Set-Contact $_.Mail -Phone $_.telephoneNumber -Mobile $_.Mobile -Company $_.Company -Title $_.Title -Department $_.Department -Office $_.physicalDeliveryOfficeName -FirstName $_.GivenName -LastName $_.sn}
По результату работы скрипта Экспорта создаются csv файлы, в которых есть недостающие в облаке контакты.
Но если я зайду в админку в облаке, данных контактов нет, соответственно и в outlook в адресной книге их никто не может найти.
В самом большом csv файле - 5479 контактов
Отсутствуют сотрудники из разных доменов. Сколько отсутствуют я не знаю.
Можете помочь мне по правильной синхронизации контактов?
Спасибо!
12 августа 2020 г. 13:55
Ответы
-
сначала экспорт в CSV, потом импорт. Вот пример импорта - ссылка.
Import-Module ActiveDirectory $Users = Import-CSV C:\path\to\users.csv foreach($User in $Users){ $Params = @{ SamAccountName = $User.SamAccountName Description = $User.Description GivenName = $User.GivenName Surname = $User.Surname Department = $User.Department Company = $User.Company EmailAddress = $User.EmailAddress Path = "OU=Zimbra users,DC=domain,DC=com" Type = "Contact" } New-ADUser @Params }
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 26 августа 2020 г. 6:20
12 августа 2020 г. 14:43
Все ответы
-
из вопроса непонятно: вы используете Azure AD Connect для синхронизации "физического" AD в O365 или нет?
Если используется, то почему просто не создавать контакты в "физическом" AD, а потом не синхронизировать их в облако?
- Изменено Гастарбайтер 12 августа 2020 г. 14:20
12 августа 2020 г. 14:16 -
В облаке только почта.
AD на физических серверах
На отдельном физическом сервере настроена Azure AD Connect
12 августа 2020 г. 14:19 -
ну значит у вас стандартный гибридный AD. просто создавайте контакты в AD (скрипты в интернете есть), и они будут (в зависимости от настройки Azure AD Connect) автоматически синзронизироваться в O365.12 августа 2020 г. 14:22
-
То есть мне все контакты из смежных доменов отправлять не в csv файл, а в отдельный контейнер?
И этот контейнер синхронизировать с облаком?
12 августа 2020 г. 14:26 -
да, в отдельную OU12 августа 2020 г. 14:28
-
Может поделитесь скриптом?
Сходу в гугле не нашлось
12 августа 2020 г. 14:32 -
сначала экспорт в CSV, потом импорт. Вот пример импорта - ссылка.
Import-Module ActiveDirectory $Users = Import-CSV C:\path\to\users.csv foreach($User in $Users){ $Params = @{ SamAccountName = $User.SamAccountName Description = $User.Description GivenName = $User.GivenName Surname = $User.Surname Department = $User.Department Company = $User.Company EmailAddress = $User.EmailAddress Path = "OU=Zimbra users,DC=domain,DC=com" Type = "Contact" } New-ADUser @Params }
- Помечено в качестве ответа Dmitriy VereshchakMicrosoft contingent staff, Moderator 26 августа 2020 г. 6:20
12 августа 2020 г. 14:43 -
Буду пробовать.
Мне надо, чтобы те кто уволились из облака тоже убирались
И если изменил телефон у сотрудника, чтобы скрипт его перезаписал
12 августа 2020 г. 14:56 -
любые изменения в AD будут синхронизированы с O365. Удаляйте контакт уволившегося сотрудника - удалится из O36512 августа 2020 г. 16:53
-
Обратите внимание что есть два типа контактов:
MailContact
MailUser
Если будет необходимость "контактам" создать ящик в вашем EXO, то их надо создавать как MailUser
Use directory synchronization to manage mail users
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
13 августа 2020 г. 9:48Модератор -
Спасибо, нужны только контакты сторонних доменов13 августа 2020 г. 10:44
-
Поясните мне, пожалуйста, если я скриптом из CSV файла загружу список контактов в AD в отдельную OU=Contacts, то по каким признакам Облако поймет, что это контакты, а не пользователи?
Мне надо, чтобы у контактов были подгружены атрибуты:
Name,Mail,mobile,telephoneNumber,distinguishedName,manager,sAMAccountName,title,sn,cn,givenName,physicalDeliveryOfficeName,company,description,department
Просто если я внутри OU=Contacts ПКМ создать - Контакт, то это уже какой то совсем другой контакт, не почтовый
14 августа 2020 г. 10:45 -
по AD-атрибутам:
и грубо говоря, если у "какого-то" контакта записан почтовый адрес - это почтовый контакт.
14 августа 2020 г. 10:58 -
Не совсем понял. В АД адрес почтовый заполнен, но в атрибутах нет - contact
14 августа 2020 г. 11:07 -
ну так у вас это не контакт, а пользователь... просто сравните количество вкладок и увидите разницу.14 августа 2020 г. 11:50
-
Дошло. Вы мне прислали скриншот контакта в AD после отработки скрипта?14 августа 2020 г. 12:07
-
нет, это просто контакт в AD:
скрипт тут не при чём. нужен тольок для того, чтобы автоматизировать создание контактов.14 августа 2020 г. 12:19 -
Ок, спасибо!
Теперь буду над скриптом шаманить.
14 августа 2020 г. 12:21