|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Скрипт анализа и замены ФИО в AD (или сравнение списков) |
|
PowerShell - [решено] Скрипт анализа и замены ФИО в AD (или сравнение списков)
|
Старожил Сообщения: 498 |
Профиль | Отправить PM | Цитировать
Доброго Вам времени, уважаемые форумчане. Снова понадобилась Ваша помощь. Рассказываю суть:
До текущего времени и в данный момент все пользователи в AD (исторически так сложилось, я пришёл - так было, как говорится) заводятся, к примеру, так: ivanov_ii - Иван И. Иванов; petrov_pp - Пётр П. Петров... и так далее. Думаю логика ясна. В прошлом году начали большие внедрения (Exchange, документооборот, Lync) и всё бы ничего, но: в документообороте в некоторых документах ФИО обрезается таким образом - Иван И.И., в Outlook поиск контактов по глобальному списку происходит только по имени (имя то первое). Пришли к выводу, что будет проще заменить текущие "Имя О. Фамилия" на полные " Фамилия Имя Отчество" - будет гораздо удобнее и информативнее, как для документооборота с продуктами Microsoft, так и для пользования в будущем. Так вот. Есть списки пользователей с полными ФИО в таком виде: полные ФИО, отдел, должность (выслал отдел кадров) плюс есть выгрузка пользователей из AD в виде CSV файла со столбцами: sAMAccountName, cn, company, department, title ivanov_ii, Иван И. Иванов, ООО "Рога и копыта", отдел умиротворения, начальник Каким образом можно сравнить фамилии из двух списков, заменить ФИО из второго варианта на полные ФИО, и загрузить данную информацию в AD? В принципе - как загрузить информацию я знаю. Важен именно процесс (скрипт) сравнения двух файлов. Я конечно понимаю, что можно и вручную, но 1200 пользователей вручную - не наш метод |
|
------- Отправлено: 07:56, 10-06-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Crush45, для того, кто будет делать, не помешают реальные образцы файлов:
Цитата Crush45:
Цитата Crush45:
|
||
Отправлено: 08:33, 10-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 498
|
Профиль | Отправить PM | Цитировать Iska, сделаем. Чуть позже выложу.
|
------- Отправлено: 15:17, 10-06-2015 | #3 |
Старожил Сообщения: 498
|
Профиль | Отправить PM | Цитировать Добавил небольшие два файлика для сравнения.
Как я это вижу: сравниваем два файла - Берём фамилию (и имя? есть однофамильцы) из списка AD - ищем совпадение фамилии в списке от ОК - если совпадает - Берём логин sAMAccountName, берём полное ФИО и записываем через точку с запятой в новый файл merge.csv В итоге - получаем готовый csv файл для загрузки данных в AD по sAMAccountName. sAMAccountName - уникален. |
------- Отправлено: 12:05, 23-06-2015 | #4 |
Старожил Сообщения: 498
|
Профиль | Отправить PM | Цитировать В общем удалось всё решить используя преобразования в Excel - привёл оба списка к виду из двух столбцов - от ОК: ФамилияИмя + Отчество, из AD: sAMAccountName + cn (впоследствии пришлось заменить поле на DisplayName - так как я не нашёл прямого способа изменения атрибута cn). Далее используя функции ВПР - заполнил отчества в файле для AD. Далее используя надстройку PowerQuery для Excel объединил столбцы ФамилияИмя+Отчество, в итоге на выходе получил необходимый файл с sAMAccountName,DisplayName и необходимыми доп.данными. Сохранил таблицу в csv с кодировкой Unicode (UTF8) для PowerShell и загрузил в AD следующим скриптом:
$file='C:\test.csv' Import-CSV -Path $file | ForEach-Object { Set-ADUser -Identity $_.sAMAccountName -DisplayName $_.DisplayName } Import-CSV -Path $file | ForEach-Object { Get-ADUser -Identity $_.sAMAccountName -Properties DisplayName,cn | Rename-ADObject -NewName $_.DisplayName } Всем удачи. |
|
------- Отправлено: 17:50, 30-06-2015 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - скрипт для замены текста в файле | batyaPS | Скриптовые языки администрирования Windows | 19 | 10-01-2015 06:27 | |
CMD/BAT - Скрипт замены системного файла | SHASHLIK | Скриптовые языки администрирования Windows | 1 | 18-12-2014 16:26 | |
Любой язык - Скрипт для замены | Kira1 | Скриптовые языки администрирования Windows | 2 | 15-07-2013 18:39 | |
CMD/BAT - Скрипт замены файла | ruba4o | Программирование и базы данных | 0 | 07-02-2013 21:14 | |
[решено] Сравнение ячеек в БД (SQL или access) | sidorova | Программирование и базы данных | 12 | 27-08-2006 13:21 |
|