PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Аватара пользователя
IvanXXL

PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение IvanXXL »

Прошу помочь по возможности в решении задачи:



Есть csv-выгрузка из 1С такого вида:



Код:

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

Фамилия;Имя;Отчество;ТН;ДР;СНИЛС;Организация;Подразделение;Должность;Дата приема;Дата увольнения
Пупкин;Василий;Алибабаевич;0009876543;19.02.1966;888-777-666 55;ООО "Рога и копыта";Бухгалтерия;шредерщик;08.07.2000

и есть учетные записи в AD с displayname вида "Василий А. Пупкин".

Учитывая, что в домене отчество обозначено только первым символом, а в выгрузке полностью, то возможны совпадения при сравнении, т.к. в выгрузке есть еще , например, сотрудник "Пупкин Василий Алексеевич".

Необходимо очистить выгрузку от неуникальных в этом отношении записей, т.е. в данном случае удалить обоих Пупкиных, и дополнить очищенную выгрузку графой "samaccountname", заполнив ее соответствующими данными из AD (если есть).

Все учетные записи в AD находятся в OU Domain\Сотрудники. CSV в win-кодировке.
Аватара пользователя
Iska

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Iska »

Цитата IvanXXL:



Учитывая, что в домене отчество обозначено только первым символом,
PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD




Просто при создании пользователей администратор был ленив, чтобы вводить составляющую «О» (из ФИО) в «Выводимое имя» полностью.
Аватара пользователя
IvanXXL

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение IvanXXL »

Цитата Iska:



Просто при создании пользователей администратор был ленив, чтобы вводить составляющую «О» (из ФИО) в «Выводимое имя» полностью.
PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD




История умалчивает, почему админы в учетных записях не забивали отчество полностью, однако учетных записей уже более 2000, а порядок навести надо бы.
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Kazun »

Код:

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

PS > $al
Count Name                      Group
----- ----                      -----
    1 Б                         {@{Фамилия=Бульба; Имя=Адексааа; Отчество=Алибаба
    1 К                         {@{Фамилия=Крендельков; Имя=Адексааа; Отчество=Ал
    2 П                         {@{Фамилия=Пупкин; Имя=Василий; Отчество=Алибабае

Теперь мне нужно все на букву K:



Код:

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

$k = $al | Where {$_.Name -eq "К"} | Foreach {$_.Group}





Код:

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

$result = $k | 
    Group {"{0} {1}. {2}" -f $_.Name1,$_.Name2[0],$_.LastName} .......
Аватара пользователя
IvanXXL

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение IvanXXL »

Цитата Iska:



рано или поздно отчество придётся вносить полностью.
PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD




Так ведь поэтому и попросил помощи, если хотя бы половину удастся сопоставить, то я кучу времени сэкономлю.

А если по существу, то вы лично можете мне помочь в решении сформулированной задачи?
Аватара пользователя
Iska

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Iska »

IvanXXL, рано или поздно отчество придётся вносить полностью.
Аватара пользователя
Iska

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Iska »

Текущая структура в AD - это свалка, которую еще мне предстоит разгрести. Там привязаться не к чему. Выводимое имя - это единственное, чему можно сейчас доверять. Поэтому дубли имен из выгрузки надо отбрасывать. Их надо будет вручную выверять. Поля выгрузки, кроме имени, отчества и фамилии, в решении текущей задачи использовать не предполагалось, они потребуются впоследствии для актуализации информации в AD после сопоставления сотрудников с учетными записями.
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Kazun »

ТН;ДР;СНИЛС;Организация;Подразделение;Должность;Дата приема;Дата увольнения - Атрибуты в AD требуется угадать, если есть дублирующие записи?



Подразделение;Должность - Присутствуют в AD?
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Kazun »

Текущая структура в AD - это свалка, которую еще мне предстоит разгрести. Там привязаться не к чему. Выводимое имя - это единственное, чему можно сейчас доверять. Поэтому дубли имен из выгрузки надо отбрасывать. Их надо будет вручную выверять. Поля выгрузки, кроме имени, отчества и фамилии, в решении текущей задачи использовать не предполагалось, они потребуются впоследствии для актуализации информации в AD после сопоставления сотрудников с учетными записями.
Аватара пользователя
Kazun

Re: PowerShell - [решено] Сопоставление сотрудников из 1С учетным записям в AD

Сообщение Kazun »

Код:

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

$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
		}
	}
Ответить

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