重命名联系人对象的姓氏和给定名称

时间:2015-04-29 06:58:34

标签: powershell active-directory

有人可以告诉我如何重命名活动目录中联系人对象的sngivenName吗?

这是我查询联系人OU中数据的方式:

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

来自Microsoft:

  

要修改用户的名字,姓氏和其他名称,请使用   Set-ADUser cmdlet

我的目标是修改两个属性的值,因为我的文本都是小写的,我希望使用类似的东西:

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

获取每个单词的大写字母。

一些例子会很棒。

如果您知道我所需要的GUI工具,那么请分享。

1 个答案:

答案 0 :(得分:2)

要更改联系人AD对象的属性,您需要使用Set-ADOject Cmdlet和-Replace参数。 Set-ADUser仅设置user类型的AD对象的属性。

以下代码将使用联系人对象的full name,在AD中搜索它,然后将GivenNameSNDisplayName更改为标题案例。

我添加了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;}