Показать полную графическую версию : Перенос свойств пользователей из одного домена в другой
Есть два домена domain1 и domain2. Между ними настроены доверительные отношения.
В domain1 имеются связанные почтовые ящики.
Необходимо перенести свойства из domain2 в domain1 тех пользователей, которые имеют связанный почтовый ящик. Но DisplayName может отличаться. Под свойствами подразумевается:
Telephone number
Mobile
Office
Description
Job Title
Departament
Company
Manager
Подсобите пожалуйста скриптом.
выгружаете пользователей с нужными полями в файл,
вносите изменения в файл
загружаете файл в другой домен, с заменой
_https://www.morgantechspace.com/2014/11/Export-AD-Users-to-CSV-using-Powershell.html
выгружаете пользователей с нужными полями в файл,
вносите изменения в файл
загружаете файл в другой домен, с заменой
_https://www.morgantechspace.com/2014/11/Export-AD-Users-to-CSV-using-Powershell.html »
Проблема в том, что имена учётных записей в доменах разные.
Необходимо сравнение domain1 атрибута LinkedMasterAccount с domain2 sAMAccountName. Если они равны, то копировать Property с пользователей domain2 в domain1.
DJ Mogarych
13-09-2019, 20:38
Получите списки пользователей из двух доменов (get-aduser), в первом укажите -Properties LinkedMasterAccount, т. к. по умолчанию он не импортируется, сохранив их в переменные.
Потом надо запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser).
Получите списки пользователей из двух доменов (get-aduser), в первом укажите -Properties LinkedMasterAccount, т. к. по умолчанию он не импортируется, сохранив их в переменные.
Потом надо запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser). »Хорошо звучит. :-)
Запускаю скрипт на первом домене:
Get-Mailbox -ResultSize unlimited | select SamAccountName,mobile,office,departament,linkedmasteraccount | Export-CSV "C:\AD_Users\Users_Domain1.csv" -NoTypeInformation -Encoding UTF8
Получаю csv-файл со следующим содержимым:
SamAccountName,"mobile","Office","departament","LinkedMasterAccount"
SuperUserName,,"",,"Domain\Name.User"
Запускаю скрипт на втором домене:
Get-ADUser -Filter * -SearchBase "OU=SuperUsers,DC=Domain,DC=local" -Properties * | Select -Property sAMAccountName,mobile,office,departament | Export-CSV "C:\AD_Users\Users_Domain2.csv" -NoTypeInformation -Encoding UTF8
Получаю csv-файл со следующим содержимым:
sAMAccountName,"mobile","office","departament"
Name.User,"+99 999999999",,"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"
Возникает несколько вопросов:
1. Почему выводится значение "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"? И как это исправить?
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)?
1. Почему выводится значение "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"? И как это исправить? »
Нашёл ошибку. Не "Departament", a "Department". Исправил.
Остаётся один вопрос:
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? »
it3, а зачем с первого выгружаешь почтовые ящики? LinkedMasterAccount это разве не аттрибут из AD?
Так конечно тоже можно, просто зачем себе дополнительные палки в колеса совать...
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? »
$csv = (import-csv c:\oldusers.csv)
foreach ($thing in $csv) {
if (get-aduser -identity $($thing.samaccountname) -erroraction silentlycontinue) {
set-aduser -identity $($thing.samaccountname) -whatif тут другие параметры, синтаксис не помню
}
}
Писал с телефона, пробуй сам. Параметр -whatif позволяет не ошибиться.
DJ Mogarych
17-09-2019, 10:25
Кстати, лучше не так
Get-ADUser -Filter * -SearchBase "OU=SuperUsers,DC=Domain,DC=local" -Properties * | Select -Property sAMAccountName,mobile,office,department,
а так:
Get-ADUser -Filter * -SearchBase "OU=SuperUsers,DC=Domain,DC=local" -Properties mobile,office,department
Это гораздо быстрее, и sAMAccountName уже есть в стандартном наборе. Можно и фильтр при случае подкрутить.
Это гораздо быстрее, и sAMAccountName уже есть в стандартном наборе. Можно и фильтр при случае подкрутить. »Спасибо.
Второй вопрос до сих пор остаётся открытым:
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? » »
Буду рад любой помощи.
DJ Mogarych
17-09-2019, 23:00
it3, Charg же обрисовал выше концепцию.
it3, Charg же обрисовал выше концепцию. »
Я с PowerShell начинаю лишь знакомство, и то, что написано в посте Charg'a - для меня не совсем понятно.
it3, то есть хочешь готовое решение чтобы просто скопипастить и запустить и чтоб всё заработало?
it3, то есть хочешь готовое решение чтобы просто скопипастить и запустить и чтоб всё заработало? »Ну, так не получится, в любом случае.
Господа, нет готовых решений?
Господа, нет готовый решений? »
готовых не будет, надо писать
можно на гитхабе посмотреть
можно на гитхабе посмотреть »
Все перерыл.
Безрезультатно.
DJ Mogarych
16-10-2019, 14:00
it3, готовых решений нет и не будет, т. к. задача достаточно специфическая и необходимо разбираться на месте. Приглашайте специалиста.
it3, готовых решений нет и не будет, т. к. задача достаточно специфическая и необходимо разбираться на месте. Приглашайте специалиста. »Хорошо. Спасибо.
Всё таки хотелось бы достичь какого то результата.
Я делаю следующее:
1. На domain1 запускаю скрипт:
Get-Mailbox -Filter {IsLinked -eq $true} -ResultSize Unlimited | select name,samaccountname,LinkedMasterAccount | Export-Csv C:\AD_Users\MaiL_LinkedMasterAccount.csv -Encoding UTF8 -Delimiter ";"
2. На domain2 запускаю скрипт:
Get-ADUser -Filter * -SearchBase "OU=Folder1,DC=domain2,DC=local" -Properties * | select samaccountname,officephone,title,department | Export-Csv C:\temp\MaiL_domain2.csv -Encoding UTF8 -Delimiter ";"
По итогу у меня есть два файла csv (пример во вложении).
Мне необходимо сравнить эти файлы, и перенести информацию (officephone,title,department) в domain1 (если LinkedMasterAccount совпадает с samaccountname).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.