|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск данных из одного файла в другом |
|
PowerShell - [решено] Поиск данных из одного файла в другом
|
Старожил Сообщения: 412 |
Профиль | Отправить PM | Цитировать Всем привет!
Стоит задача: сравнивать результаты обучающихся (БД MySQL) с пользователями в Active Directory и считать процент (количество) не обученных. Для этого начал писать скрипт на Powershell, в котором есть такое: 1. Выгрузить данные из MySQL (mysql.csv) Export form MySQL
#Connection options
$constring="server=10.7.7.7;uid=myuser;pwd=mypassword;database=mydb;Pooling=False" $mysql = New-Object MySql.Data.MySqlClient.MySqlConnection($constring) $mysql.Open() #Collect data from table $sqlquery1 = "select * from mytable" $req = New-Object Mysql.Data.MysqlClient.MySqlCommand($sqlquery1,$mysql) $dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($req) $dataSet = New-Object System.Data.DataSet $dataAdapter.Fill($dataSet, "Query1") | Out-Null #Export data to CSV $dataSet.Tables["Query1"] | Export-Csv -path "C:\Users\dahiko\Desktop\mysql.csv" -Encoding UTF8 -NoTypeInformation 2. Выгрузить пользователей из определенной OU Active Directory (ad.csv) Export form AD
$OUUsers=@(
'OU=AllUsers,OU=filial1,DC=my,DC=domain,DC=ru', 'OU=AllUserss,OU=filial2,DC=my,DC=domain,DC=ru') $OUUsers | foreach { Get-ADUser -Filter {(Enabled -eq "True")} -SearchBase $_ -Properties *} | Select mail,Name, samaccountname, distinguishedName, whenCreated, department, title, city,description,Company,telephoneNumber,mobile | ConvertTo-CSV | Out-File "C:\Users\dahiko\Desktop\ad.csv" Вот как теперь в файле mysql.csv найти всех, кто есть в файле ad.csv и высчитать процент необученных? Может у кого-то есть примеры чего-то похожего по сравнению двух файлов? В обоих файлах есть одинаковое поле "mail" Заранее благодарен. |
|
Отправлено: 12:56, 11-01-2022 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать dahiko,
Прикрепите примеры обоих файлов (конфиденциальные данные можете изменить), тогда можно будет предложить алгоритм. На вскидку: Выделить сравниваемые поля из обоих файлов и сравнить оба набора данных через compare-object |
------- Отправлено: 13:45, 11-01-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 412
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 12:18, 12-01-2022 | #3 |
fascinating rhythm Сообщения: 6494
|
Профиль | Отправить PM | Цитировать dahiko, пример хороший, только одинакового поля mail нет, в одном файле это mail, в другом - email.
И в AD меньше пользователей, чем в Mysql, т. е., обучившихся больше, чем людей в наличии. Если поправить это, то получится так, как и предположил YuS_2: |
------- Отправлено: 14:11, 12-01-2022 | #4 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата dahiko:
|
||
------- Отправлено: 14:45, 12-01-2022 | #5 |
Старожил Сообщения: 412
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата DJ Mogarych:
Не понял, но почему-то скрипт считает процент не верно. Скрипт возвращает 50,00%. Хотя в файле mysql.csv есть все люди из файла ad.csv. Значит результат должен быть 100% |
||
Отправлено: 15:00, 12-01-2022 | #6 |
fascinating rhythm Сообщения: 6494
|
Профиль | Отправить PM | Цитировать Это процент тех, кто не обучился, т. е., есть в AD, но нет в Mysql.
|
------- Отправлено: 15:10, 12-01-2022 | #7 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата dahiko:
|
|
------- Отправлено: 15:17, 12-01-2022 | #8 |
Старожил Сообщения: 412
|
Профиль | Отправить PM | Цитировать Прошу прощения. Скрипт правильно посчитал. Он вернул 50%, поточу что у одного пользователя в ad.csv не было кавычки. Поэтому одного пользователя скрипт не смог найти с файле mysql.csv.
Подскажите, как добавить в вывод скрипта еще две цифры? 1. Количество уникальных пользователей из файла ad.csv 2. Количество обученных уникальных пользователей из файла mysql.csv, которые есть в файле ad.csv. В файле mysql.csv один человек может быть указан несколько раз, т.к. есть несколько курсов, которым обучаются пользователи) |
Отправлено: 17:38, 12-01-2022 | #9 |
fascinating rhythm Сообщения: 6494
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:53, 12-01-2022 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Замена текста из одного файла в другом | blackeangel | Скриптовые языки администрирования Windows | 6 | 20-11-2015 11:07 | |
CMD/BAT - [решено] Замена строки из одного файла в другом по маске | blackeangel | Скриптовые языки администрирования Windows | 2 | 10-11-2015 16:05 | |
CMD/BAT - [решено] поиск и замена из одного файла в другом | alexmoreman | Скриптовые языки администрирования Windows | 6 | 27-05-2013 09:33 | |
VBS/WSH/JS - [решено] Экспорт данных из одного txt файла в другой | TRaMeLL | Скриптовые языки администрирования Windows | 31 | 17-10-2012 11:33 | |
PowerShell - [решено] Поиск и вставка информации из одного csv-файла в другой | IvanXXL | Скриптовые языки администрирования Windows | 1 | 20-07-2011 12:48 |
|