none
Получение информации из AD из списка пользователей csv RRS feed

  • Вопрос

  • Привет.

    Есть список пользователей формата:

    surname name

    Задача выгрузить их должности/

    Пробую экспортировать так:

    $userList = import-csv "C:\Scripts\names.csv" 

    ForEach($User in $userList){     

    Get-ADUser -Identity $user.UserName -Properties DisplayName,title |

    select DisplayName,title | Export-CSV -Append "C:\Scripts\title.csv" -NoTypeInformation}

    но, скрипт не находит пользователей поскольку они в формате:

    name surname

    Можно ли как то решить эту проблему ?

    p.s. Я новичок в ps


    14 ноября 2019 г. 20:28

Ответы

  • могу предложить костыль. Откройте csv в Excel, и поменяйте местами колонки фамилии и имени:

    get-aduser -Filter {Name -eq $user} -Properties * | ft -Property Title
    • Помечено в качестве ответа Roman Romanov84 15 ноября 2019 г. 10:12
    15 ноября 2019 г. 7:19
  • могу предложить костыль. Откройте csv в Excel, и поменяйте местами колонки фамилии и имени:

    get-aduser -Filter {Name -eq $user} -Properties * | ft -Property Title

    это можно проще сделать замену местами

    $($user.name -replace '([^ ]) ([^ ])','$2 $1')


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

    • Помечено в качестве ответа Roman Romanov84 15 ноября 2019 г. 10:11
    15 ноября 2019 г. 7:23
    Модератор

Все ответы

  • покажите заголовок вашего names.csv и пару строчек из него

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

    15 ноября 2019 г. 4:51
    Модератор
  • Name
    Krylov Alexey
    15 ноября 2019 г. 5:54
  • Name
    Krylov Alexey

    Get-ADUser -Identity $user.Name -Properties DisplayName,title |



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

    15 ноября 2019 г. 6:17
    Модератор
  • Я так пробовал

    Get-ADUser : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL, либо элемент коллекции аргум
    ентов имеет значение NULL.

    15 ноября 2019 г. 6:26
  • Я так пробовал

    Get-ADUser : Не удается проверить аргумент для параметра "Identity". Аргумент имеет значение NULL, либо элемент коллекции аргум
    ентов имеет значение NULL.

    $userList = import-csv "C:\Scripts\names.csv" 

    ForEach($User in $userList){ 

    Write-Output "Working with user : '$($user.name)'"

    ...

    попробуйте убрать параметр -identity и добавить вывод информации перед выполнением команды (пример выше), ошибка указывает на то что параметр $user.name пустой, а это в свою очередь значит что либо ваш csv отличается от того который вы написали тут, либо ваш скрипт выглядит иначе чем тут написано

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


    15 ноября 2019 г. 6:32
    Модератор
  • Сейчас ошибка такая

    Get-ADUser : Не удается найти объект с удостоверением: "Krylov Alexey"

    15 ноября 2019 г. 6:59
  • Сейчас ошибка такая

    Get-ADUser : Не удается найти объект с удостоверением: "Krylov Alexey"

    как выглядит скрипт? через оснастку aduc можете найти (через поиск) "krylov alexey"?

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

    15 ноября 2019 г. 7:12
    Модератор
  • могу предложить костыль. Откройте csv в Excel, и поменяйте местами колонки фамилии и имени:

    get-aduser -Filter {Name -eq $user} -Properties * | ft -Property Title
    • Помечено в качестве ответа Roman Romanov84 15 ноября 2019 г. 10:12
    15 ноября 2019 г. 7:19

    как выглядит скрипт? через оснастку aduc можете найти (через поиск) "krylov alexey"?

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

    $userList = import-csv "C:\Scripts\username1.csv" -Encoding UTF8

    ForEach($User in $userList){

    Get-ADUser -Identity $user.name -Properties DisplayName,title |

    select DisplayName,title | Export-CSV -Append "C:\Scripts\title.csv" -NoTypeInformation}

    Через оснастку пользователя находит

    15 ноября 2019 г. 7:21
  • могу предложить костыль. Откройте csv в Excel, и поменяйте местами колонки фамилии и имени:

    get-aduser -Filter {Name -eq $user} -Properties * | ft -Property Title

    это можно проще сделать замену местами

    $($user.name -replace '([^ ]) ([^ ])','$2 $1')


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

    • Помечено в качестве ответа Roman Romanov84 15 ноября 2019 г. 10:11
    15 ноября 2019 г. 7:23
    Модератор
  • это можно проще сделать замену местами

    $($user.name -replace '([^ ]) ([^ ])','$2 $1')

    мне проще в Excel ;)
    15 ноября 2019 г. 7:26

    как выглядит скрипт? через оснастку aduc можете найти (через поиск) "krylov alexey"?

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

    $userList = import-csv "C:\Scripts\username1.csv" -Encoding UTF8

    ForEach($User in $userList){

    Get-ADUser -Identity $user.name -Properties DisplayName,title |

    select DisplayName,title | Export-CSV -Append "C:\Scripts\title.csv" -NoTypeInformation}

    Через оснастку пользователя находит

    искали дословно так же?

    попробуйте вариант с фильтром предложенный Anahaym

    можете посмотреть как называется параметр в котором значится значение krylov alexey (дословно такое) и использовать другую конструкцию

    $adusers = get-aduser * -properties name, surname, samaccountname, title, DisplayName, SomeParameter
    foreach ($user in $users){
       $adusers | where {$_.SomeParameter -match $user.name}  | select DissplayName, Title
    } export-csv c:\output.csv


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

    15 ноября 2019 г. 7:43
    Модератор
  • Это поможет ? Он не находит не Krylov Alexey, не Alexey Krylov

    15 ноября 2019 г. 7:45
  • Это поможет ? Он не находит не Krylov Alexey, не Alexey Krylov

    покажите вывод:

    get-aduser -Filter {Name -eq "Krylov Alexey"} -Properties * | ft -Property Name,Title
    get-aduser -Filter {Name -eq "Alexey Krylov"} -Properties * | ft -Property Name,Title

    15 ноября 2019 г. 7:52

    покажите вывод:

    get-aduser -Filter {Name -eq "Krylov Alexey"} -Properties * | ft -Property Name,Title
    get-aduser -Filter {Name -eq "Alexey Krylov"} -Properties * | ft -Property Name,Title

    На stackoverflow получил такой ответ:

    If you are trying to get the users by their Name or DisplayName you will have to go with Filter instead of Identity. The following should work, assuming your actual AD-users Names are in the format of the csv.

    $userList = import-csv "C:\Scripts\names.csv" 

    ForEach($User in $userList){

    Get-ADUser -Filter "Name -eq '$($user.Name)'" -Properties DisplayName,title |

    select DisplayName,title | Export-CSV -Append "C:\export\result.csv" -NoTypeInformation}

    Через фильтр сработало.

    Спасибо вам за участие.

    15 ноября 2019 г. 9:46
  • я об этом и писал...

    это же написано и в документации, в примерах.

    15 ноября 2019 г. 10:03