none
Работа с CSV и AD - POWERSHELL

    Вопрос

  • Добрый день, коллеги!

    Поставлена задача, дали CSV файл с ФИО людей, необходимо по этим ФИО найти аккаунты в AD. Создал небольшой скрипт:

    cls
    $users = (Import-Csv C:\Scripts\files\test.csv).ФИО
    foreach ($user in $users)
    {
        [pscustomobject]@{
    	                    FIO = $user
                            AccountAD = (Get-ADUser -Filter {displayName -like $user} -Properties *).SamAccountName
    	                    Mail = (Get-ADUser -Filter {displayName -like $user} -Properties *).mail
    	                 } | Export-Csv -Path 'C:\Scripts\files\111.csv' -Append -NoTypeInformation -Encoding UTF8
          
    } 

    Все работает, все ок. Но при нахождении дубликатов, скрипт записывает такое значение:

    Иванов Иван Иванович;System.Object[];System.Object[]

    Так же прилагаю часть из самого CSV файла:

    ФИО,Почта,AD
    Иванов Иван Иванович ,,
    Петров Петр Петрович,,

    и т.д.

    Я догадался, что таких Ивановых много, и скрипт не смог записать данные по ним. Прошу дать совет как быть?

    Спасибо.


    • Изменено eclegolas 7 июня 2019 г. 14:13 правка
    7 июня 2019 г. 14:10

Ответы

  • foreach ($user in $users)
    {
        $adusers = Get-ADUser -Filter {displayName -like $user} -Properties *
        foreach ($aduser in $adusers){
          [pscustomobject]@{
             FIO = $user
             AccountAD = $aduser.SamAccountName
             Mail = $aduser.mail
          } | Export-Csv -Path 'C:\Scripts\files\111.csv' -Append -NoTypeInformation -Encoding UTF8
        } 
    }


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа eclegolas 7 июня 2019 г. 16:39
    7 июня 2019 г. 16:01
    Модератор

Все ответы

  • foreach ($user in $users)
    {
        $adusers = Get-ADUser -Filter {displayName -like $user} -Properties *
        foreach ($aduser in $adusers){
          [pscustomobject]@{
             FIO = $user
             AccountAD = $aduser.SamAccountName
             Mail = $aduser.mail
          } | Export-Csv -Path 'C:\Scripts\files\111.csv' -Append -NoTypeInformation -Encoding UTF8
        } 
    }


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа eclegolas 7 июня 2019 г. 16:39
    7 июня 2019 г. 16:01
    Модератор
  • День добрый.

    Вам желательно однозначно идентифицировать пользователей, если в csv больше нет данный кроме ФИО надо запрашивать у поставщика информации - "кто есть кто".

    Дубликаты можно определить так:

    $users = (Import-Csv C:\Scripts\files\test.csv).ФИО
    Compare-Object -ReferenceObject $users -DifferenceObject ($users | select -Unique)


    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia на FaceBook и в Telegram

    7 июня 2019 г. 16:10
  • Добрый день!

    Вектор, спасибо вам! Как я сам до этого не додумался.............

    7 июня 2019 г. 16:40