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

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

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

Старожил


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

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


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

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

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

Отправлено: 15:32, 22-06-2017

 

Ветеран


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

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


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

Последний раз редактировалось Kazun, 23-06-2017 в 11:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:04, 23-06-2017 | #2



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

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


Старожил


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

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


Вложения
Тип файла: rar сот2.rar
(219 байт, 4 просмотров)

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

Отправлено: 11:39, 23-06-2017 | #3


Ветеран


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

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


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

PS > Import-Csv $f

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


PS > Import-Csv $f -Encoding Default

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

Отправлено: 11:43, 23-06-2017 | #4


Старожил


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

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


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

Последний раз редактировалось Fantastish, 23-06-2017 в 12:03.


Отправлено: 11:54, 23-06-2017 | #5


Ветеран


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

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


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

Отправлено: 14:31, 23-06-2017 | #6


Старожил


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

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


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

Отправлено: 13:02, 29-06-2017 | #7


Ветеран


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

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


Цитата Fantastish:
а можно поподробней? »
Нет. У меня нет доступа к AD.

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

Отправлено: 13:27, 29-06-2017 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Сравнение 2 групп AD Johny_spb Скриптовые языки администрирования Windows 2 10-02-2017 14:41
CMD/BAT - Сравнение содержимого 2х текстовых файлов, с выводом отчета bionicmon Скриптовые языки администрирования Windows 3 23-11-2015 18:16
2012 R2 - [решено] Создание пользователей в AD из списка word/excel dimmigg Windows Server 2012/2012 R2 4 14-07-2014 18:54
Сравнение таблиц в Excel'e xkspy Хочу все знать 1 04-01-2007 10:42
восстановление excel-файла, затертого другим файлом с тем же именем XPurple Хочу все знать 4 03-01-2006 13:47




 
Переход