none
Заменить данные о пользователе в AD (ФИО, должность, отдел, организация)

    Вопрос

  • Добрый день!

    Помогите посредством PS справиться со следующей задачей:

    Необходимо всем пользователям домена по уникальному "sAMAccountName" изменить в соответствии с заполненной таблицей Excel некоторые поля в AD, а именно: Фамилия; Имя; Отчество;Должность; Отдел; Организация.

    Заполненная таблица Excel с нужными данными, имеет вид:

    Необходимо сделать так, чтобы сценарий опрашивал каждого пользователя AD по уникальному "sAMAccountName" и в случае его обнаружения, изменял нужные поля пользователя (Имя - givenName; Фамилия - sn; Отображаемое имя - displayNameДолжность - title; Отдел - department; Организация - company; а также, как я понимаю атрибуты ФИО: name и cn), на те, которые в таблице.

    Поменять значения удалось, кроме name и cn. Ошибка: "Адаптеру не удалось настроить значения свойства name". Вероятно, эти значения меняются с помощью другой команды. Я не нашла прямого способа изменения атрибута cn и name! Буду очень благодарна за помощь в изменении данных атрибутов (="Фамилия,Имя,Отчество"). Спасибо.

    Мои действия:

    1) Сохраняю файл в кодироке UTF-8 c именем adusers.csv (notepad - Save AS - Encoding - UTF-8)

    2) Формат файла

    SamAccountName,Фамилия,Имя,Отчество,Должность,Отдел,Организация
    ivanov,Иванов,Иван,Иванович,Начальник отдела,Отдел ИТ,Рога и копыта
    sergeev,Сергеев,Сергей,Сергеевич,Бухгалтер,Бухгалтерия,Сатурн

    3) Скрипт

    Import-Csv adusers.csv |Foreach{

    $s = $_.SamAccountName
    $s = [adsisearcher]"(samaccountname=$s)"
    $u = $s.FindOne().GetDirectoryEntry()  
    if($u) {  $u.Put("givenName", $_."Имя") 
                    $u.Put("sn", $_."Фамилия") 
                    $u.Put("title", $_."Должность") 
                    $u.Put("department", $_."Отдел") 
                    $u.Put("company", $_."Организация") 
    $u.SetInfo()

    }

          else {

    Write-Host -Fore Yellow "Пользователь $s не найден"
    }
    }








    • Изменено Anna AN 20 ноября 2018 г. 6:10
    19 ноября 2018 г. 13:07

Ответы

  • # Для изменения name&cn
    $fio = "{0} {1} {2}" -f $_.Фамилия, $_.Имя, $_.Отчество
    $u.rename("CN=$fio")
    $user.CommitChanges()

    Фамилия:

    $u.Put("sn", $_."Фамилия")

    Имя:

    $u.Put("givenName", $_."Имя") 

    Отчество:

    $u.Put("initials", $_."Отчество"[0]) 

    Отображаемое имя:

    $u.Put("displayname", $fio) 

    PS. Лучше использовать модуль Active Directory для данной задачи с командлетами Get-ADUser и Set-ADUser,Rename-ADObject 

    # 1.
    Rename-ADObject -Identity $DN -NewName $NewName
    
    # 2. 
    Set-ADUser $u -Surname Фамилия -GivenName Имя -Initials Отчество -DisplayName ФИО


    • Изменено KazunEditor 19 ноября 2018 г. 13:37
    • Предложено в качестве ответа Vector BCOModerator 19 ноября 2018 г. 15:19
    • Помечено в качестве ответа Anna AN 20 ноября 2018 г. 6:03
    19 ноября 2018 г. 13:33
    Отвечающий

Все ответы

  • # Для изменения name&cn
    $fio = "{0} {1} {2}" -f $_.Фамилия, $_.Имя, $_.Отчество
    $u.rename("CN=$fio")
    $user.CommitChanges()

    Фамилия:

    $u.Put("sn", $_."Фамилия")

    Имя:

    $u.Put("givenName", $_."Имя") 

    Отчество:

    $u.Put("initials", $_."Отчество"[0]) 

    Отображаемое имя:

    $u.Put("displayname", $fio) 

    PS. Лучше использовать модуль Active Directory для данной задачи с командлетами Get-ADUser и Set-ADUser,Rename-ADObject 

    # 1.
    Rename-ADObject -Identity $DN -NewName $NewName
    
    # 2. 
    Set-ADUser $u -Surname Фамилия -GivenName Имя -Initials Отчество -DisplayName ФИО


    • Изменено KazunEditor 19 ноября 2018 г. 13:37
    • Предложено в качестве ответа Vector BCOModerator 19 ноября 2018 г. 15:19
    • Помечено в качестве ответа Anna AN 20 ноября 2018 г. 6:03
    19 ноября 2018 г. 13:33
    Отвечающий
  • Спасибо, работает! Пусть Ваши знания и умения высоко оценивают и выдают вкусные и ощутимые поощрения ;-)
    20 ноября 2018 г. 6:06