|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD |
|
|
PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD
|
Новый участник Сообщения: 32 |
Профиль | Отправить PM | Цитировать Прошу помочь по возможности в решении задачи:
Есть csv-выгрузка из 1С такого вида: Фамилия;Имя;Отчество;ТН;ДР;СНИЛС;Организация;Подразделение;Должность;Дата приема;Дата увольнения Пупкин;Василий;Алибабаевич;0009876543;19.02.1966;888-777-666 55;ООО "Рога и копыта";Бухгалтерия;шредерщик;08.07.2000 Учитывая, что в домене отчество обозначено только первым символом, а в выгрузке полностью, то возможны совпадения при сравнении, т.к. в выгрузке есть еще , например, сотрудник "Пупкин Василий Алексеевич". Необходимо очистить выгрузку от неуникальных в этом отношении записей, т.е. в данном случае удалить обоих Пупкиных, и дополнить очищенную выгрузку графой "samaccountname", заполнив ее соответствующими данными из AD (если есть). Все учетные записи в AD находятся в OU Domain\Сотрудники. CSV в win-кодировке. |
|
Отправлено: 11:32, 28-01-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата IvanXXL:
|
|
Отправлено: 12:28, 28-01-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 13:45, 28-01-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать IvanXXL, рано или поздно отчество придётся вносить полностью.
|
Отправлено: 14:09, 28-01-2014 | #4 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А если по существу, то вы лично можете мне помочь в решении сформулированной задачи? |
||
Отправлено: 14:51, 28-01-2014 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать ТН;ДР;СНИЛС;Организация;Подразделение;Должность;Дата приема;Дата увольнения - Атрибуты в AD требуется угадать, если есть дублирующие записи?
Подразделение;Должность - Присутствуют в AD? |
Отправлено: 15:05, 28-01-2014 | #6 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Текущая структура в AD - это свалка, которую еще мне предстоит разгрести. Там привязаться не к чему. Выводимое имя - это единственное, чему можно сейчас доверять. Поэтому дубли имен из выгрузки надо отбрасывать. Их надо будет вручную выверять. Поля выгрузки, кроме имени, отчества и фамилии, в решении текущей задачи использовать не предполагалось, они потребуются впоследствии для актуализации информации в AD после сопоставления сотрудников с учетными записями.
|
Отправлено: 15:37, 28-01-2014 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $result = Import-Csv users.csv -Delimiter ";" | Group {"{0} {1} {2}" -f $_.Имя,$_.Отчество[0],$_.Фамилия} | Where {$_.Count -eq 1} | Foreach { $name = $_.Name $sam = (Get-ADUser -Filter "DisplayName -eq '$name'").SamAccountName if(Get-ADUser -Filter "DisplayName -eq '$name'") { $_.Group | Add-Member -NotePropertyName SamAccountName -NotePropertyValue $sam -PassThru } else { $_.Group | Add-Member -NotePropertyName SamAccountName -NotePropertyValue "" -PassThru } } |
Последний раз редактировалось Kazun, 28-01-2014 в 16:14. Отправлено: 16:07, 28-01-2014 | #8 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Kazun, если не сложно, то прошу прокомментировать работу кода, в частности мне непонятна строка "$name = $_.Name".
|
Отправлено: 07:11, 29-01-2014 | #9 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать 1) Import-Csv users.csv -Delimiter ";" - Импортируем данные из CSV
2) Далее передаем по конвейеру командлету Group-Object, для поиска объектов, которые получаются одинаковые при приведении к виду Василий А Пупкин(если требуется Василий А. Пупкин - то изменить на "{0} {1}. {2}"). PS > Import-Csv users.csv -Delimiter ";" | Group {"{0} {1}. {2}" -f $_.Имя,$_.Отчество[0],$_.Фамилия} Count Name Group ----- ---- ----- 2 Василий А. Пупкин {@{Фамилия=Пупкин; Имя=Василий; Отчество=Алибабаевич; ТН=0009876543; ДР=19.02.1966 1 Адексааа А. Бульба {@{Фамилия=Бульба; Имя=Адексааа; Отчество=Алибабаевич; ТН=0009876543; ДР=19.02.1966 PS Import-Csv 1.csv -Delimiter ";" | Group {"{0} {1}. {2}" -f $_.Имя,$_.Отчество[0],$_.Фамилия} | Where{ $_.Count -eq 1} Count Name Group ----- ---- ----- 1 Адексааа А. Бульба {@{Фамилия=Бульба; Имя=Адексааа; Отчество=Алибабаевич; ТН=0009876543; ДР=19.02.1966;... 5) $sam = (Get-ADUser -Filter "DisplayName -eq '$name'").SamAccountName - Производим поиск в AD и пробуем получить свойство SamAccountName 6) Дальше, случайно , добавил лишнюю проверку. if(Get-ADUser -Filter "DisplayName -eq '$name'") - Достаточно if($sam) 7) $_.Group | Add-Member -NotePropertyName SamAccountName -NotePropertyValue $sam -PassThru - Добавляем новое свойство к объекту $result = Import-Csv users.csv -Delimiter ";" | Group {"{0} {1}. {2}" -f $_.Имя,$_.Отчество[0],$_.Фамилия} | Where {$_.Count -eq 1} | Foreach { $name = $_.Name $sam = (Get-ADUser -Filter "DisplayName -eq '$name'").SamAccountName if($sam) { $_.Group | Add-Member -NotePropertyName SamAccountName -NotePropertyValue $sam -PassThru } else { $_.Group | Add-Member -NotePropertyName SamAccountName -NotePropertyValue "" -PassThru } } |
Отправлено: 09:18, 29-01-2014 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Задача по учетным записям | JustMAXIM@twitter | Microsoft Windows 2000/XP | 1 | 06-03-2012 19:46 | |
Любой язык - [решено] Применение твиков реестра ко всем учетным записям после установки ОС Windows 7 | SANIOK_AV | Скриптовые языки администрирования Windows | 1 | 16-09-2011 15:33 | |
CMD/BAT - [решено] переименовать и поставить пароль учетным запиясям из командной строки? | super_bitard | Скриптовые языки администрирования Windows | 5 | 13-04-2011 10:51 | |
Применение твиков реестра ко всем учетным записям | im9 | Автоматическая установка Windows 2000/XP/2003 | 1 | 24-12-2010 19:09 | |
Вопросы по учетным записям. | babki | Microsoft Windows NT/2000/2003 | 2 | 21-12-2007 09:43 |
|