Этот блог посвящен MS Exchange, Outlook и проблемам, связанным с электронной почтой

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

powershell Обычному администратору Exchange вполне достаточно инструментов, которые ему дают Exchange Management Console и Exchange Management Shell. Но что делать, когда их недостаточно?

В последнее время я участвую в проекте по миграции с Exchange 5.5 на Exchange 2007. В рамках этого проекта был использован скрипт, переносящий пользователей 5.5 в качестве контактов в Exchange 2007. Потребовался единоразывый перенос контактов из Exchange 5.5 в Exchange 2007. Приняли решение формировать адресные списки на основании атрибута «st» (State/Province). Создали csv файл, содержащий необходимую информацию. Атрибут «st» можно редактировать через Exchange Management Console. Но командлеты Set-Mailbox и Set-MailContact этого делать не позволяют. Что же делать?

Пользователь и контакт — это объекты Active Directory. Поэтому с их атрибутами можно работать через интерфейс ADSI из PowerShell

В результате были написан следующий скрипт

param ($FileName = «c:\contacts.csv»)

Import-Csv $FileName |
ForEach-Object -Process {
    New-MailContact -ExternalEmailAddress $_.ExternalEmailAddress `
    -Name $_.Name `
    -DisplayName $_.DisplayName `
    -PrimarySmtpAddress $_.PrimarySMTPAddress `
    -FirstName $_.FirstName `
    -LastName $_.LastName `

    -OrganizationalUnit «mydomain.com/contacts» `

    -alias $_.alias
    $Obj = [adsi]«LDAP://CN=$($_.name),OU=Contacts,DC=mydomain,DC=com»
    $Obj.psbase.InvokeSet(«st»,$_.st)
    $Obj.psbase.CommitChanges()
}

Этот скрипт создает контакты из csv файла (по умолчанию c:\contacts.csv) и записывает атрибуты, в том числе атрибут «st». Как вы видите, работа напрямую с ADSI несколько сложнее, чем с помощью командлетов Exchange. Но как я отметил раньше, как правило это и не требуется

Большое спасибо Василию Гусеву за помощь

Комментарии как всегда приветствуются :)

Похожие посты:

clock 9 Май 2008, 12:48 comment Комментариев: 4



Комментариев: 4 к “Редактирование атрибутов пользователей с помощью PowerShell”

  1. kkv:

    О это то что мне надо :)
    а как добавить custom attributes сюда? или где посмотреть



  2. Pavel Nagaev:

    set-mailcontact, cмотрите аттрибуты
    http://technet.microsoft.com/en-us/library/aa995950(EXCHG.80).aspx



  3. kkv:

    вот ведь..
    смотрел аналог по команде get-mailcontact |fl
    там я не увидел CustomAttribute1



  4. gdsk:

    Ребят попробовал воспользоваться вашим скрипттом не не получилось, вот что пишет:

    You cannot call a method on a null-valued expression.
    At line:1 char:272

    Import-Csv «C:\test.csv» | ForEach-Object -Process {New-MailContact -Name
     $_.Name -ExternalEmailAddress $_.Email -Alias $_.al -OrganizationalUnit «posc.
    local/exchange/sibur» $Obj=[adsi]» LDAP://CN=$($_.Name),OU=sibur,OU=exchange,DC=
    posc,DC=local» $Obj.psbase.InvokeSet( <<<< «st»,$_.st) $Obj.psbase.CommitChange
    s()}

    Что это может значить?!