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

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

Ответить
Настройки темы
PowerShell - [решено] Скрипт анализа и замены ФИО в AD (или сравнение списков)

Аватара для Crush45

Старожил


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


Конфигурация

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


Изменения
Автор: Crush45
Дата: 23-06-2015
Описание: edit
Вложения
Тип файла: zip fio.zip
(7.7 Kb, 7 просмотров)
Доброго Вам времени, уважаемые форумчане. Снова понадобилась Ваша помощь. Рассказываю суть:
До текущего времени и в данный момент все пользователи в 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
Благодарности: 8087

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


Crush45, для того, кто будет делать, не помешают реальные образцы файлов:
Цитата Crush45:
Есть списки пользователей с полными ФИО в таком виде:
полные ФИО, отдел, должность (выслал отдел кадров) »
и:
Цитата Crush45:
выгрузка пользователей из AD в виде CSV файла со столбцами:
sAMAccountName, cn, company, department, title
ivanov_ii, Иван И. Иванов, ООО "Рога и копыта", отдел умиротворения, начальник »
упакованные в архив, каковой прикреплён к сообщению или выложен на RGhost. Желательно, чтобы в образцах этих файлов хотя бы пара-тройка записей совпадала.

Отправлено: 08:33, 10-06-2015 | #2



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

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


Аватара для Crush45

Старожил


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

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


Iska, сделаем. Чуть позже выложу.

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 15:17, 10-06-2015 | #3


Аватара для Crush45

Старожил


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

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


Добавил небольшие два файлика для сравнения.
Как я это вижу:
сравниваем два файла - Берём фамилию (и имя? есть однофамильцы) из списка AD - ищем совпадение фамилии в списке от ОК - если совпадает - Берём логин sAMAccountName, берём полное ФИО и записываем через точку с запятой в новый файл merge.csv
В итоге - получаем готовый csv файл для загрузки данных в AD по sAMAccountName. sAMAccountName - уникален.

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 12:05, 23-06-2015 | #4


Аватара для Crush45

Старожил


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

Профиль | Отправить 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 }
На отладку тестового списка и понимания, что необходимо в итоге ушло порядка часа-двух. С основным списком на 1200 записей ушло минут 15 вместе с загрузкой в AD.
Всем удачи.

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 17:50, 30-06-2015 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - скрипт для замены текста в файле 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




 
Переход