PDA

Показать полную графическую версию : [решено] Сравнение пользователей в AD с Excel файлом с выводом лога


Fantastish
22-06-2017, 15:32
Уважаемые коллеги прошу помощи!
Суть задачи:
Автоматизация проверки пользователей в AD и вывод в последствии расхождения, для дальнейшего редактирования и актуализации.
Что есть:
- Файл Excel, который предоставляет отдел кадров (во вложении)
Что хотелось бы получить:
Скрипт, который анализировал файл Excel по полям Должность, ФИО и название отдела (Возможно стоит, модифицировать файл по другому) и сравнивал его с AD (OU с контейнером пользователей) с полями: ФИО, Должность, Отдел
и если происходит расхождение по заданным критериям сравнения, выводил в excel (txt) файл (вариант представления на выбор), информацию по данному пользователю в формате:
excel: ФИО Должность Отдел > AD: ФИО Должность Отдел (Для удобства, можно предложить свой вариант)
Спасибо.

з.ы. За потраченное время, отблагодарю пивасом, если заинтересует кого.

Добавление:
Файл Excel переделан и заменен.
атрибуты в AD:
CN - ФИО
department - Отдел
title - Должность

Kazun
23-06-2017, 11:04
Import-Excel в модуле - https://github.com/dfinke/ImportExcel
$el = Import-Excel "сот2.xlsx"
$userNotFound = @()

$badUser = $el | Where {$_.'Ф.И.О.'} | Foreach {
$user = Get-ADuser -Filter "CN -eq '$($_.'Ф.И.О.')'" -Properties cn,department,title
if($user)
{
if($user.title -ne $_."Должность" -or $user.department -ne $_."Отдел")
{
"Excel: {0} | {1} | {2} > AD: {3} | {4} | {5}" -f $_.'Ф.И.О.',$_."Должность",$_."Отдел",$user.CN,$user.department,$user.title
}
}
else
{
$userNotFound += $_.'Ф.И.О.'
}
}

$userNotFound > userNotFound.txt
$badUser > badUser.txt

Если модуль не хочется ставить, то можно сохранить файл в формате CSV с кодировкой UTF-8.
http://i.imgur.com/5lln6Oy.jpg
И заменить Import-Excel на Import-Csv

Fantastish
23-06-2017, 11:39
Уважаемый Kazun.
Произвел замену CSV согласно вашим указаниям, скрипт отработал, но не вывел ничего в двух файлах
Возможно он не знает к чему ему надо обратиться и требуется указать само OU AD?

Kazun
23-06-2017, 11:43
У файла должна быть кодировка UTF-8, у приклепленного другая и посмотреть, корректный вывод данных из $el в консоли:
$el = Import-CSV сот2.csv -Encoding Default

PS > Import-Csv $f

��������� ����� �.�.�.
--------- ----- ------
��������� ������ ����� ����������� ������������ ����������� ����������
������� �������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
�������� ����� ����������� ������������ ����������� ����������
��������� ����� ����������� ������������ ����������� ����������


PS > Import-Csv $f -Encoding Default

Должность Отдел Ф.И.О.
--------- ----- ------
Начальник отдела Отдел обеспечения деятельности руководства Учреждения
Старший референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Референт Отдел обеспечения деятельности руководства Учреждения
Корректор Отдел обеспечения деятельности руководства Учреждения

Fantastish
23-06-2017, 11:54
Понял. Спасибо. Отписал в пм по пару не понятным моментам.

Iska
23-06-2017, 14:31
Kazun, есть же и третий путь — обычная работа с Рабочей книгой посредством Automation.

Fantastish
29-06-2017, 13:02
а можно поподробней?

Iska
29-06-2017, 13:27
а можно поподробней? »
Нет. У меня нет доступа к AD.

Создаёте COM-объект Excel, используете его методы и свойства. Object model (Excel VBA reference) (https://msdn.microsoft.com/en-us/vba/excel-vba/articles/object-model-excel-vba-reference)




© OSzone.net 2001-2012