none
Заполнение атрибута пользователя для электронно почты

    Вопрос

  • Доброго времени суток Уважаемые коллеги.

    Столкнулся с ситуацией, когда при миграции учетных записей через ADMT в целевой лес, у пару сотен пользователей не заполнен атрибут E-mail, или правильнее mail.

    Нужно это для отработки скрипта Enable-MailUser, то есть скрипт берет и смотрит что атрибут mail  у пользователя не пустой и создает mailuser, Но к сожалению, не у всех учеток эти поля заполнены.

    Вопрос:

    Не поможете советом сделать скрипт, который позволил бы при импорте csv пройтись по всем учеткам и проставить необходимый имейл. При чем у некоторых учеток он уже есть и как здесь поступить, скрипт может игнорировать данные учетные записи у которых поле mail заполнено или просто пройдется пор всем подряд ?

    Я так понимаю изначально я выгрузил данных пользователей в формат csv из исходного леса по следующим параметрам

    Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name
    ,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," c:\mail_list.csv

    Далее я так понимаю необходимо создать командлет из import-csv и цикла foreach, который бы прошелся по всем учетным записям целевого леса, или выборочно по OU, и дозаполнил атрибут mail, с учетом тех учеток, где уже данное поле заполнено. Но пока не представляю как это сделать.

    Не поможете ?

    Спасибо.


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    4 декабря 2018 г. 19:56

Ответы

  • import-csv c:\mail_list.csv | Foreach {$u=@{}} {$u[$_.Name]= $_.mail}
    Get-ADUser -Filter * -Properties mail | Foreach {
    	$mail = $u[$_.Name]
    	if($mail -and $mail -ne $_.mail) {
    		Set-ADuser $_ -EmailAddress $mail
    	}
    }

    • Помечено в качестве ответа rеstless 4 декабря 2018 г. 20:54
    4 декабря 2018 г. 20:29
    Отвечающий

Все ответы

  • import-csv c:\mail_list.csv | Foreach {$u=@{}} {$u[$_.Name]= $_.mail}
    Get-ADUser -Filter * -Properties mail | Foreach {
    	$mail = $u[$_.Name]
    	if($mail -and $mail -ne $_.mail) {
    		Set-ADuser $_ -EmailAddress $mail
    	}
    }

    • Помечено в качестве ответа rеstless 4 декабря 2018 г. 20:54
    4 декабря 2018 г. 20:29
    Отвечающий
  • Круто, спасибо.

    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    4 декабря 2018 г. 20:55
  • Да, хотел спросить, я решил попробовать по организационным подразделениям проделать заполнение и выяснил что при написании OU на русском языке я сталкиваюсь с такой ошибкой

    Get-ADUser -SearchBase 'OU=useroffice,ou=рабочие области,dc=dom,dc=lp,dc=local' -Filter * 
    et-ADUser : Directory object not found
    At line:1 char:1
    + Get-ADUser -SearchBase 'OU=useroffice,ou=рабочие области,dc=dom,dc=lp,dc= ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (:) [Get-ADUser], ADIdentityNotFoundException
        + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsof
       t.ActiveDirectory.Management.Commands.GetADUser
    
    И только когда на русском, может необходимо добавить кавычек для написания русскоязычного названия ?


    Люди тратят здоровье, что бы заработать $, а затем тратят $, что бы вернуть здоровье!

    4 декабря 2018 г. 22:00
  • Неправильно указан DistinguishedName для OU.
    5 декабря 2018 г. 5:35
    Отвечающий