我有一堆用户DisplayNames我误改成一些string(例如:xyz)
但是有一个叫做Name的字段有FirstName和Lastname。 我想要的是带有xyz的所有用户,他们将DisplayName更改为相应的名称。
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} |
这给了我需要其DisplayNames我需要改变的数组。 我在“pipe道”后添加什么?
我GOOGLE了很多,但不能拿出答案。
我试过了:
Set-Mailbox -DisplayName $_.Name
但是它说
Cannot bind parameter 'DisplayName' to the target. .... cannot be null/empty.
我怎样才能将DisplayName设置为与Name相同的值?
当从一个cmdlet直接连接到另一个cmdlet时没有$_variables。 所以Set-Mailbox显示DisplayName参数为$ null,并失败。 尝试在ForEach-Object调用(别名% )中包装Set-Mailbox命令来获取$_variables,如下所示:
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} | % {Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}
这是解决scheme:
$mbxs = Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*FirstName Lastname*"} $mbxs | foreach { %{Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}}
谢谢大家!