PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Ответить
Аватара пользователя
Fantastish

PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Fantastish »

Уважаемые коллеги прошу помощи!

Суть задачи:

Автоматизация проверки пользователей в AD и вывод в последствии расхождения, для дальнейшего редактирования и актуализации.

Что есть:

- Файл Excel, который предоставляет отдел кадров (во вложении)

Что хотелось бы получить:

Скрипт, который анализировал файл Excel по полям Должность, ФИО и название отдела (Возможно стоит, модифицировать файл по другому) и сравнивал его с AD (OU с контейнером пользователей) с полями: ФИО, Должность, Отдел

и если происходит расхождение по заданным критериям сравнения, выводил в excel (txt) файл (вариант представления на выбор), информацию по данному пользователю в формате:

excel: ФИО Должность Отдел > AD: ФИО Должность Отдел (Для удобства, можно предложить свой вариант)

Спасибо.



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



Добавление:

Файл Excel переделан и заменен.

атрибуты в AD:

CN - ФИО

department - Отдел

title - Должность
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Kazun »

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

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Fantastish »

Уважаемый Kazun.

Произвел замену CSV согласно вашим указаниям, скрипт отработал, но не вывел ничего в двух файлах

Возможно он не знает к чему ему надо обратиться и требуется указать само OU AD?
Вложения
сот2.rar
(219 байт) 0 скачиваний
сот2.rar
(219 байт) 0 скачиваний
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Kazun »

У файла должна быть кодировка UTF-8, у приклепленного другая и посмотреть, корректный вывод данных из $el в консоли:

Код:

Код: Выделить всё

$el = Import-CSV сот2.csv -Encoding Default
PS > Import-Csv $f
���������        �����                                                 �.�.�.
---------        -----                                                 ------
��������� ������ ����� ����������� ������������ ����������� ����������
������� �������� ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
��������         ����� ����������� ������������ ����������� ����������
���������        ����� ����������� ������������ ����������� ����������
PS > Import-Csv $f -Encoding Default
Должность        Отдел                                                 Ф.И.О.
---------        -----                                                 ------
Начальник отдела Отдел обеспечения деятельности руководства Учреждения
Старший референт Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Референт         Отдел обеспечения деятельности руководства Учреждения
Корректор        Отдел обеспечения деятельности руководства Учреждения
Аватара пользователя
Fantastish

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Fantastish »

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

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Fantastish »

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

Re: PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога

Сообщение Fantastish »

Цитата Fantastish:



а можно поподробней?
PowerShell - [решено] Сравнение пользователей в AD с Excel файлом с выводом лога




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



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

Вернуться в «Скриптовые языки администрирования Windows»