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

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

Fantastish 22-06-2017 15:32 2746671

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

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

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

Kazun 23-06-2017 11:04 2746826

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.

И заменить Import-Excel на Import-Csv

Fantastish 23-06-2017 11:39 2746832

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

Kazun 23-06-2017 11:43 2746834

У файла должна быть кодировка 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 2746836

Понял. Спасибо. Отписал в пм по пару не понятным моментам.

Iska 23-06-2017 14:31 2746877

Kazun, есть же и третий путь — обычная работа с Рабочей книгой посредством Automation.

Fantastish 29-06-2017 13:02 2748095

а можно поподробней?

Iska 29-06-2017 13:27 2748107

Цитата:

Цитата Fantastish
а можно поподробней? »

Нет. У меня нет доступа к AD.

Создаёте COM-объект Excel, используете его методы и свойства. Object model (Excel VBA reference)


Время: 10:26.

Время: 10:26.
© OSzone.net 2001-