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

Показать сообщение отдельно

Ветеран


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

Профиль | Отправить 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
3) Далее передаем по конвейеру и фильтруем уникальные элементы.
Код: Выделить весь код
PS Import-Csv 1.csv -Delimiter ";" | Group {"{0} {1}. {2}" -f $_.Имя,$_.Отчество[0],$_.Фамилия} | Where{ $_.Count -eq 1}

Count Name                      Group
----- ----                      -----
    1 Адексааа А. Бульба        {@{Фамилия=Бульба; Имя=Адексааа; Отчество=Алибабаевич; ТН=0009876543; ДР=19.02.1966;...
4) $name = $_.Name - Будет содержать Адексааа А. Бульба(текущий элемент в конвейере)
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
		}
	}
Код: Выделить весь код
PS > $result

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

Отправлено: 09:18, 29-01-2014 | #10