Aqui está a solução:
$mbxs = Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*FirstName Lastname*"}
$mbxs | foreach { %{Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}}
Obrigado a todos!
Eu tenho um monte de usuários que DisplayNames eu mudei por engano para alguma string (por exemplo: xyz)
Mas há um campo chamado Name que tem FirstName and Lastname. O que eu quero é pegar todos os usuários que tem xyz e eles mudam DisplayName para o nome correspondente.
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} |
Isso me dá o array que eu preciso, cujo DisplayNames eu preciso mudar. O que eu adiciono depois do "pipe"?
Eu pesquisei muito no Google, mas não consegui encontrar a resposta.
Eu tentei:
Set-Mailbox -DisplayName $_.Name
No entanto, diz
Cannot bind parameter 'DisplayName' to the target. .... cannot be null/empty.
Como posso definir o DisplayName para o mesmo valor que o nome?
Não há variável $_
ao canalizar diretamente de um cmdlet para o próximo. Portanto, Set-Mailbox
está vendo um $ null para o parâmetro DisplayName e falhando. Tente agrupar o comando Set-Mailbox em uma chamada ForEach-Object
(alias %
) para obter a variável $_
, assim:
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} | % {Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}
Tags powershell exchange