none
powershell сменить порядок слов в fullname (displayname) пользователей домена RRS feed

  • Вопрос

  • Пользователи заведены в AD с отображаемым видом "Иван Петрович Сидоров". Подскажите, как вынести вперед фамилию в fullname и displayname, чтобы получилось "Сидоров Иван Петрович"?
    28 июля 2020 г. 13:33

Ответы

  • Спасибо.

    Нашлось наконец время доделать.

    Итоговый скрипт получился такой:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate,  DC=ru" -Properties * | % {
    Set-ADUser $_ -DisplayName ($_.DisplayName -Replace '^(.+) ([^ ]+)$','$2 $1')
    Rename-ADObject  $_ -NewName ($_.Name -Replace '^(.+) ([^ ]+)$','$2 $1')
    }

    Возможно, правильнее было бы присвоить то же значение name, что и displayname.

    • Помечено в качестве ответа Vector BCOModerator 3 августа 2020 г. 11:55
    3 августа 2020 г. 11:14
  • Отвечаю сам себе. Получилось так:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate, DC=ru" -Properties * | % {

    Set-ADUser $_ -add @{"extensionattribute1"=($_.DisplayName -Replace '^(.+) ')}

    }


    • Изменено JaMrzn 4 августа 2020 г. 18:38
    • Помечено в качестве ответа Vector BCOModerator 5 августа 2020 г. 5:07
    4 августа 2020 г. 18:37

Все ответы

  • $_.DisplayName -Replace '^(.+) ([^ ]+)$','$2 $1'


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


    28 июля 2020 г. 13:36
    Модератор
  • Спасибо за наводку.

    Получилось так:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate,  DC=ru" -Properties * | % {Set-ADUser $_ -DisplayName ($_.DisplayName -Replace '^(.+) ([^ ]+)$','$2 $1')}
    Дальше стоит задача соответственно переименовать учетки и сменить Name и CN. Я так понимаю, это уже через Rename-ADObject /Set-ADObject.
    29 июля 2020 г. 7:13
  • да, для переименования нужен rename-adobject

    и сделать соответвенно можно в том же foreach в котором меняете дисплейнейм


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

    29 июля 2020 г. 7:19
    Модератор
  • Спасибо.

    Нашлось наконец время доделать.

    Итоговый скрипт получился такой:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate,  DC=ru" -Properties * | % {
    Set-ADUser $_ -DisplayName ($_.DisplayName -Replace '^(.+) ([^ ]+)$','$2 $1')
    Rename-ADObject  $_ -NewName ($_.Name -Replace '^(.+) ([^ ]+)$','$2 $1')
    }

    Возможно, правильнее было бы присвоить то же значение name, что и displayname.

    • Помечено в качестве ответа Vector BCOModerator 3 августа 2020 г. 11:55
    3 августа 2020 г. 11:14
  • Спасибо.

    Нашлось наконец время доделать.

    Итоговый скрипт получился такой:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate,  DC=ru" -Properties * | % {
    Set-ADUser $_ -DisplayName ($_.DisplayName -Replace '^(.+) ([^ ]+)$','$2 $1')
    Rename-ADObject  $_ -NewName ($_.Name -Replace '^(.+) ([^ ]+)$','$2 $1')
    }

    Возможно, правильнее было бы присвоить то же значение name, что и displayname.

    у вас вторая и третья команды работают с выводом первой команды в которой дисплейней еще не был изменен

    поэтому то что написано сейчас является и с точки зрения логики и с точки зрения производительности правильным

    единственная возможная оптимизация это присвоение результата замены порядка слов перед выполнением переименований в переменную что даст вам 5-10% производительности


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

    3 августа 2020 г. 11:19
    Модератор
  • Еще одна мини задача.

    Для передачи данных о пользователях из ad в bitrix хотелось бы задать отдельное поле для отчества. Поскольку родное поле initials ограничено шестью символами, то оно не подходит для хранения отчества. Поэтому есть задумка хранить отчество в поле description или extensionAttribute1.

    Вопрос: как из dsiplayname выделить третье слово (отчество) и его присвоить в нужное поле?


    • Изменено JaMrzn 4 августа 2020 г. 18:22
    4 августа 2020 г. 11:50
  • Отвечаю сам себе. Получилось так:

    Get-ADUser -Filter * -SearchBase "OU=test, DC=corporate, DC=ru" -Properties * | % {

    Set-ADUser $_ -add @{"extensionattribute1"=($_.DisplayName -Replace '^(.+) ')}

    }


    • Изменено JaMrzn 4 августа 2020 г. 18:38
    • Помечено в качестве ответа Vector BCOModerator 5 августа 2020 г. 5:07
    4 августа 2020 г. 18:37