如何在 Exchange 2010 中使用 Powershell 重命名一堆用户的 DisplayName?

如何在 Exchange 2010 中使用 Powershell 重命名一堆用户的 DisplayName?

我错误地将许多用户的 DisplayName 更改为某个字符串(例如:xyz)

但是有一个名为 Name 的字段,其中包含 FirstName 和 Lastname。我想要的是获取所有包含 xyz 的用户,然后将 DisplayName 更改为相应的 Name。

Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} |

这给了我所需的数组,我需要更改其 DisplayNames。我在“管道”后面添加什么?

我在 Google 上搜索了很多次,但却找不到答案。

我试过:

Set-Mailbox -DisplayName $_.Name

然而它说

Cannot bind parameter 'DisplayName' to the target. .... cannot be null/empty.

如何将 DisplayName 设置为与 Name 相同的值?

答案1

$_从一个 cmdlet 直接传输到下一个 cmdlet 时没有变量。因此Set-Mailbox,DisplayName 参数的 $null 为空,并且失败。尝试将 Set-Mailbox 命令包装在ForEach-Object调用 (别名%) 中以获取该$_变量,如下所示:

Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} | % {Set-Mailbox  -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}

答案2

解决方案如下:

$mbxs = Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*FirstName Lastname*"}
$mbxs | foreach { %{Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}}

谢谢大家!

相关内容