Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Перенос свойств пользователей из одного домена в другой

Ответить
Настройки темы
PowerShell - Перенос свойств пользователей из одного домена в другой
it3 it3 вне форума

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Telephone number
Mobile
Office
Description
Job Title
Departament
Company
Manager

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

Отправлено: 10:36, 13-09-2019

 

Старожил


Сообщения: 427
Благодарности: 72

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 12:20, 13-09-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Ageron:
выгружаете пользователей с нужными полями в файл,
вносите изменения в файл
загружаете файл в другой домен, с заменой
_https://www.morgantechspace.com/2014/11/Export-AD-Users-to-CSV-using-Powershell.html »
Проблема в том, что имена учётных записей в доменах разные.
Необходимо сравнение domain1 атрибута LinkedMasterAccount с domain2 sAMAccountName. Если они равны, то копировать Property с пользователей domain2 в domain1.

Отправлено: 13:16, 13-09-2019 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6484
Благодарности: 1463

Профиль | Отправить PM | Цитировать


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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:38, 13-09-2019 | #4

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 06:16, 16-09-2019 | #5

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


Запускаю скрипт на первом домене:
Код: Выделить весь код
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 в 08:17.


Отправлено: 07:46, 16-09-2019 | #6

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата it3:
1. Почему выводится значение "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"? И как это исправить? »
Нашёл ошибку. Не "Departament", a "Department". Исправил.
Остаётся один вопрос:
Цитата it3:
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? »

Отправлено: 12:48, 16-09-2019 | #7


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


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 позволяет не ошибиться.

Последний раз редактировалось Charg, 16-09-2019 в 16:24.


Отправлено: 16:03, 16-09-2019 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6484
Благодарности: 1463

Профиль | Отправить PM | Цитировать


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

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:25, 17-09-2019 | #9

it3 it3 вне форума Автор темы

Пользователь


Сообщения: 94
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Это гораздо быстрее, и sAMAccountName уже есть в стандартном наборе. Можно и фильтр при случае подкрутить. »
Спасибо.
Второй вопрос до сих пор остаётся открытым:
Цитата Charg:
2. Каким образом через PowerShell запустить цикл foreach для переменной, где хранятся данные из первого домена, если найдены совпадения - прописывать нужные свойства учётке из второго домена (set-aduser)? » »
Буду рад любой помощи.

Отправлено: 10:48, 17-09-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Перенос свойств пользователей из одного домена в другой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2012 - Перенос прав пользователей с одного сервера на другой NeoBaSS Windows Server 2012/2012 R2 0 17-10-2015 20:49
2008 R2 - перенос файлов из одного домена в другой nokogerra Windows Server 2008/2008 R2 1 25-06-2014 21:41
2008 R2 - Перенос объектов из одного домена в другой. nokogerra Windows Server 2008/2008 R2 0 19-02-2014 13:19
Перенос пользователей и групп из одноuj домена в другой (win2003 EE x64) Alboss Microsoft Windows NT/2000/2003 1 17-12-2007 13:53
Перенос пользователей с одного сервера на другой. URAJ Microsoft Windows NT/2000/2003 1 15-05-2006 09:03




 
Переход