Переименовать фамилию и данное имя контактного объекта

Может кто-нибудь сказать мне, как я могу переименовать sn и givenName объекта контакта в активном каталоге?

Вот как я запрашиваю данные в моем подразделении контактов:

Get-ADObject -Filter {(ObjectClass -eq "contact") -and (givenName -like "*myName*") } -Properties sn, givenName -SearchBase "OU=contacts,DC=domain,DC=name" 

От Майкрософт:

Чтобы изменить данное имя, фамилию и другое имя пользователя, используйте командлет Set-ADUser.

Моя цель — изменить значения обоих свойств, потому что у меня есть текст, написанный строчными буквами, и я надеялся использовать что-то вроде:

$TextInfo = (Get-Culture).TextInfo
$TextInfo.ToTitleCase("one-two three")
Desired Output: One-Two Three

чтобы получить заглавную букву для каждого слова.

Несколько примеров было бы здорово.

Если вы знаете инструмент с графическим интерфейсом, который делает то, что мне нужно, пожалуйста, поделитесь им.


person Tony Clifton    schedule 29.04.2015    source источник


Ответы (1)


Чтобы изменить атрибуты объекта AD контакта, вам потребуется использовать командлет Set-ADOject с параметром -Replace. Set-ADUser будет устанавливать только атрибуты объекта AD типа пользователя.

Следующий код возьмет full name объекта контакта, найдет его в AD, а затем изменит GivenName, SN и DisplayName на заглавный регистр.

Я добавил DisplayName, так как это поле не обновляется автоматически при изменении имени и фамилии, но вы можете удалить эту часть, если она не нужна.

$fullname = "My Name"
$contact = Get-ADObject -Filter {(ObjectClass -eq "contact") -and (Name -like $fullname)} -Properties * -SearchBase "OU=contacts,DC=domain,DC=name"   

$TextInfo = (Get-Culture).TextInfo

$GivenNametoTitleCase = $TextInfo.ToTitleCase(($contact.givenName).ToLower())
$SNtoTitleCase = $TextInfo.ToTitleCase(($contact.sn).ToLower())
$DisplayNametoTitleCase = $TextInfo.ToTitleCase(($contact.DisplayName).ToLower())

$contact | Set-ADObject -Replace @{GivenName=$GivenNametoTitleCase;`
                                   sn=$SNtoTitleCase;`
                                   DisplayName=$DisplayNametoTitleCase;}
person Richard    schedule 29.04.2015
comment
Мне было бы любопытно, работает ли это на практике. Поскольку LDAP, как правило, нечувствителен к регистру, обычно изменение регистра не рассматривается как изменение. Пожалуйста, дайте нам знать. - person jwilleke; 29.04.2015
comment
@jeemster Работал нормально, когда я тестировал его в нашей Active Directory. Я думаю, что параметр -Replace может очистить атрибут перед его заменой. - person Richard; 29.04.2015