У меня есть группа пользователей, DisplayNames которых я по ошибке изменил на какую-то строку (например: xyz)
Но есть одно поле под названием «Имя», в котором есть имя и фамилия. Я хочу взять всех пользователей, у которых есть xyz, и изменить DisplayName на соответствующее Name.
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} |
Это дает мне нужный мне массив, чьи DisplayNames мне нужно изменить. Что добавляю после "трубы"?
Я много гуглил, но не смог найти ответа.
Я попытался:
Set-Mailbox -DisplayName $_.Name
Однако он говорит
Cannot bind parameter 'DisplayName' to the target. .... cannot be null/empty.
Как я могу установить для DisplayName то же значение, что и для Name?
Нет никаких $_
переменная при прямом переходе от одного командлета к другому. Так Set-Mailbox
видит $ null для параметра DisplayName и не работает. Попробуйте обернуть команду Set-Mailbox в ForEach-Object
звонок (псевдоним %
) чтобы получить это $_
переменная, например:
Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*xyz*"} | % {Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}
Вот решение:
$mbxs = Get-Mailbox -ResultSize Unlimited -Filter {DisplayName -like "*FirstName Lastname*"}
$mbxs | foreach { %{Set-Mailbox -Identity $_.PrimarySmtpAddress -DisplayName $_.Name}}
Спасибо всем!