Редактирование атрибутов пользователей с помощью 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. Но как я отметил раньше, как правило это и не требуется
Большое спасибо за помощь
Комментарии как всегда приветствуются
Похожие посты:
9 Май 2008, 12:48
Комментариев: 4








15 Май 15, 2008 г. в 16:41
О это то что мне надо
а как добавить custom attributes сюда? или где посмотреть
16 Май 16, 2008 г. в 10:11
set-mailcontact, cмотрите аттрибуты
16 Май 16, 2008 г. в 10:28
вот ведь..
смотрел аналог по команде get-mailcontact |fl
там я не увидел CustomAttribute1
4 Сентябрь 4, 2008 г. в 08:13
Ребят попробовал воспользоваться вашим скрипттом не не получилось, вот что пишет:
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()}
Что это может значить?!