Помощь по написанию сценариев - необходимо получить номер телефона учетных записей AD, а затем добавить их в контакты в доверенном домене.
У меня есть учетные записи домена, которые я создал как контакты в другом доверенном домене, чтобы они могли видеть их в своем Exchange GAL.
Мне нужен способ извлечь поле номера телефона из UserA (учетная запись пользователя) в DomainA и импортировать его в UserA (контакт) в DomainB.
Я понимаю логику, это просто код (vbscript/powershell/ что угодно), который ускользает от меня.
Логика, как я это вижу:
- Подключиться к источнику AD (ou/subtree)
- Извлечение учетных записей пользователей из подразделений и субконтейнеров, включая имя, фамилию, отображаемое имя и номер телефона
- Подключиться к целевой AD (ou/subtree)
- Проверьте / сопоставьте контакт с извлечением в #2 выше на основе отображаемого имени
- Обновить поле телефона с указанием номера телефона в выписке
- Пишите логи успеха и неудач
Кто-нибудь может помочь?
2 ответа
Проблема в том, как сопоставить учетную запись на одной стороне с учетной записью на другой. Это сделает извлечение.
Любые идеи о том, как сделать матч на импорт? У вас есть общее поле, как employeeID в обоих? В противном случае может потребоваться сложное сопоставление нескольких полей.
get-aduser -filter * -searchbase "ou=users,dc=adomain,dc=com" -properties Telephonenumber|select displayname, givenname, sn, telephonenumber|export-csv phones.csv
import-csv phones.csv| foreach {
get-aduser -displayname $_.displayname -searchbase "ou=contacts dc=Bdomain,dc=com" | set-aduser -telephoneNumber $_.telephonenumber
}
Пока все ваши DisplayNames в Домене A действительно совпадают с вашими DisplayNames в Домене B, следующее должно помочь.
В Домене A запустите:
Get-ADUser -filter * -properties TelephoneNumber,DisplayName | select DisplayName,TelephoneNumber | export-csv users.csv
В Домене B запустите:
Import-CSV users.csv | ForEach { get-aduser -filter "displayname -eq '$($_.displayname)'" | set-aduser -replace @{telephonenumber="$($_.TelephoneNumber)"} }
Имейте в виду, что я сам новичок в PowerShell, поэтому, возможно, я ошибся. Я проверил это на одном пользователе, но не в больших масштабах.