Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Перенос свойств пользователей из одного домена в другой (http://forum.oszone.net/showthread.php?t=342170)

it3 13-09-2019 10:36 2887728

Перенос свойств пользователей из одного домена в другой
 
Есть два домена domain1 и domain2. Между ними настроены доверительные отношения.
В domain1 имеются связанные почтовые ящики.
Необходимо перенести свойства из domain2 в domain1 тех пользователей, которые имеют связанный почтовый ящик. Но DisplayName может отличаться. Под свойствами подразумевается:

Telephone number
Mobile
Office
Description
Job Title
Departament
Company
Manager

Подсобите пожалуйста скриптом.

Ageron 13-09-2019 12:20 2887735

выгружаете пользователей с нужными полями в файл,
вносите изменения в файл
загружаете файл в другой домен, с заменой

_https://www.morgantechspace.com/2014/11/Export-AD-Users-to-CSV-using-Powershell.html

it3 13-09-2019 13:16 2887746

Цитата:

Цитата Ageron
выгружаете пользователей с нужными полями в файл,
вносите изменения в файл
загружаете файл в другой домен, с заменой
_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 2887816

Получите списки пользователей из двух доменов (get-aduser), в первом укажите -Properties LinkedMasterAccount, т. к. по умолчанию он не импортируется, сохранив их в переменные.
Потом надо запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser).

it3 16-09-2019 06:16 2888157

Цитата:

Цитата DJ Mogarych
Получите списки пользователей из двух доменов (get-aduser), в первом укажите -Properties LinkedMasterAccount, т. к. по умолчанию он не импортируется, сохранив их в переменные.
Потом надо запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser). »

Хорошо звучит. :-)

it3 16-09-2019 07:46 2888167

Запускаю скрипт на первом домене:
Код:

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)?

it3 16-09-2019 12:48 2888188

Цитата:

Цитата it3
1. Почему выводится значение "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"? И как это исправить? »

Нашёл ошибку. Не "Departament", a "Department". Исправил.
Остаётся один вопрос:
Цитата:

Цитата it3
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? »


Charg 16-09-2019 16:03 2888219

it3, а зачем с первого выгружаешь почтовые ящики? LinkedMasterAccount это разве не аттрибут из AD?
Так конечно тоже можно, просто зачем себе дополнительные палки в колеса совать...

Цитата:

Цитата it3
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 2888314

Кстати, лучше не так
Код:

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 уже есть в стандартном наборе. Можно и фильтр при случае подкрутить.

it3 17-09-2019 10:48 2888318

Цитата:

Цитата DJ Mogarych
Это гораздо быстрее, и sAMAccountName уже есть в стандартном наборе. Можно и фильтр при случае подкрутить. »

Спасибо.
Второй вопрос до сих пор остаётся открытым:
Цитата:

Цитата Charg
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? » »

Буду рад любой помощи.

DJ Mogarych 17-09-2019 23:00 2888386

it3, Charg же обрисовал выше концепцию.

it3 18-09-2019 06:08 2888405

Цитата:

Цитата DJ Mogarych
it3, Charg же обрисовал выше концепцию. »

Я с PowerShell начинаю лишь знакомство, и то, что написано в посте Charg'a - для меня не совсем понятно.

Charg 18-09-2019 09:04 2888421

it3, то есть хочешь готовое решение чтобы просто скопипастить и запустить и чтоб всё заработало?

it3 18-09-2019 12:03 2888454

Цитата:

Цитата Charg
it3, то есть хочешь готовое решение чтобы просто скопипастить и запустить и чтоб всё заработало? »

Ну, так не получится, в любом случае.

it3 09-10-2019 10:19 2891302

Господа, нет готовых решений?

Ageron 11-10-2019 17:33 2891688

Цитата:

Цитата it3
Господа, нет готовый решений? »

готовых не будет, надо писать
можно на гитхабе посмотреть

it3 16-10-2019 11:21 2892273

Цитата:

Цитата Ageron
можно на гитхабе посмотреть »

Все перерыл.
Безрезультатно.

DJ Mogarych 16-10-2019 14:00 2892328

it3, готовых решений нет и не будет, т. к. задача достаточно специфическая и необходимо разбираться на месте. Приглашайте специалиста.

it3 17-10-2019 07:35 2892429

Цитата:

Цитата DJ Mogarych
it3, готовых решений нет и не будет, т. к. задача достаточно специфическая и необходимо разбираться на месте. Приглашайте специалиста. »

Хорошо. Спасибо.

it3 17-10-2019 14:06 2892499

Вложений: 1
Всё таки хотелось бы достичь какого то результата.

Я делаю следующее:
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).

DJ Mogarych 17-10-2019 16:32 2892523

Если у вас доверие между доменами, есть ли учётка, которая имеет административные полномочия в обоих доменах?

it3 23-10-2019 07:49 2893159

Цитата:

Цитата DJ Mogarych
Если у вас доверие между доменами, есть ли учётка, которая имеет административные полномочия в обоих доменах? »

Есть!
Имя учётной записи: superuserdomain2


Время: 09:44.

Время: 09:44.
© OSzone.net 2001-