none
Переименование DisplayName у множества сотрудников в PowerShell. RRS feed

  • Вопрос

  • Здравствуйте!

    Задача такова, есть в домене около 1000 учеток. В один прекрасный день руководство решило переименовать отделы и должности. По стандарту в DisplayName пишем и должность тоже. К примеру: Вася Пупкин - менеджер продаж Москва. Теперь после изменения должности должно быть: Вася Пупкин - управляющий торговыми сетями Москва. Если бы одна должность для всех то не было бы проблем но у всех разные должности. Подготовил такой скрипт:

    $Container = "OU=1,OU=Users,OU=Company,DC=contoso,DC=com"
    $csvfile = "c:\JobTitleList.csv"
    Import-Csv $csvfile | % {
    $OldTitle = $_.OldTitle;
    $NewTitle = $_.NewTitle;
    $UserName = Get-ADUser -fil {name -like $OldTitle} -SearchBase $Container | ForEach {
    $NewName = $_.Name.Replace($OldTitle,$NewTitle)
    Set-Aduser $_.SamAccountName -DisplayName $NewTitle
    }
    }

    Содержимое JobTitleList.csv:

    "OldTitle","NewTitle"

    "менеджер продаж","управляющий торговыми сетями"

    "маркетолог","торговый агент"


    Проблема кроется в команде Get-ADUser -fil {name -like $OldTitle}. Повершел понимает его как точное совпадение. Если вместо -like $OldTitle поставить -like "*менеджер продаж*" работает на ура. Не работает так же -like "*$OldTitle*" и т.д. Как сделать так чтоб при поиске находил то что нам нужно?Или есть ли другой способ? Помогите пожалуйста. Мне нужно искать именно по имени так, как поле Title у многих не заполнен в связи с другими требованиями.

Ответы

  • Get-ADUser -Filter "Name -like '*$OldTitle*'"


    Так пробывал уже не получился.

    Если вместо -like $OldTitle поставить -like "*менеджер продаж*" работает на ура. - Если это отрабатывает, значит файл сформирован неверно.

    PS > $name = "minist"
    
    # Фильтр не отработает
    PS > Get-ADuser -Filter {Name -like "*$name*"}
    
    # Фильтр отрабатывает
    PS C> Get-ADuser -Filter "Name -like '*$name*'"
    
    
    DistinguishedName : CN=Administrator,CN=Users,DC=contoso,DC=com
    Enabled           : True
    GivenName         :
    Name              : Administrator
    ObjectClass       : user
    ObjectGUID        : 766f2cb1-fc9d-4567-81b2-406216cd9a37
    SamAccountName    : Administrator
    SID               : S-1-5-21-988863312-363203669-2128900122-500
    Surname           :
    UserPrincipalName :


    • Изменено KazunEditor 20 мая 2016 г. 6:56
    • Помечено в качестве ответа Mirba 20 мая 2016 г. 8:50
    Отвечающий

Все ответы

  • Get-ADUser -Filter "Name -like '*$OldTitle*'"

    Отвечающий
  • Get-ADUser -Filter "Name -like '*$OldTitle*'"


    Так пробывал уже не получился.
  • Get-ADUser -Filter "Name -like '*$OldTitle*'"


    Так пробывал уже не получился.

    Если вместо -like $OldTitle поставить -like "*менеджер продаж*" работает на ура. - Если это отрабатывает, значит файл сформирован неверно.

    PS > $name = "minist"
    
    # Фильтр не отработает
    PS > Get-ADuser -Filter {Name -like "*$name*"}
    
    # Фильтр отрабатывает
    PS C> Get-ADuser -Filter "Name -like '*$name*'"
    
    
    DistinguishedName : CN=Administrator,CN=Users,DC=contoso,DC=com
    Enabled           : True
    GivenName         :
    Name              : Administrator
    ObjectClass       : user
    ObjectGUID        : 766f2cb1-fc9d-4567-81b2-406216cd9a37
    SamAccountName    : Administrator
    SID               : S-1-5-21-988863312-363203669-2128900122-500
    Surname           :
    UserPrincipalName :


    • Изменено KazunEditor 20 мая 2016 г. 6:56
    • Помечено в качестве ответа Mirba 20 мая 2016 г. 8:50
    Отвечающий
  • :) Спасибо! Видать дело было в кодировке так, как я отсюда копирнул не попёрло. Набрал в шелле пошло!