Я пытался понять, как изменить прокси-адреса некоторых из моих пользователей в AD с помощью PowerShell. Моя основная цель - использовать Get-ADObject для запроса AD для определенного набора пользователей и удаления всех SMTP-адресов для определенного домена из пользовательских прокси-адресов (если он существует).
$ADobjects = @(Get-ADObject -Filter 'objectClass -eq "User"' -Properties mailNickname, ProxyAddresses) | Where-Object {$_.ProxyAddresses -Match "@BADdomain.com"}
ProxyAddresses могут выглядеть так:
SMTP:john.doe@domainA.com, smtp:john.doe@BADdomain.com, smtp:john.doe@domainC.com, X500:/o=info/ou=test/cn=john.doe, x400:/o=info/ou=test/cn=john.doe, smtp:john.doe@domain.local
Здесь нет определенного порядка, адреса X500 могут быть первыми, могут быть последними, SMTP, X400 и т.д. Верхний регистр SMTP указывает основной SMTP-адрес, нижний регистр указывает дополнительный адрес. Вполне возможно, что john.doe@BADdomain.com может быть основным SMTP-адресом (я буду игнорировать регистр при их разделении - позже я могу проверить регистр для изменения основного SMTP, если это необходимо). И (я могу ошибаться), но кажется, что proxyAddresses - это не обычный массив (может быть, это многомерный массив)? Но когда я пытаюсь разбить массив на «,», я получаю сообщение об ошибке:
ForEach ($Object in $ADobjects)
{
$TempInfo = $Object.ProxyAddresses.Split(",")
write-host $TempInfo
}
Ошибка, которую он выдает:
Method invocation failed because [Microsoft.ActiveDirectory.Management.ADPropertyValueCollection] doesn't contain a method named 'Split'.
Могу ли я "разбить" proxyAddresses на отдельный массив, чтобы я мог работать с каждым из них и удалить его, если имя домена @ BADdomain.com? Я мог бы затем удалить его из массива. Или можно использовать ".Заменить "и заменить все, начиная с SMTP, на BADdomain.com (если BADdomain.com найден до следующего SMTP)? Я не знаю, я пробовал разные способы, но безуспешно.
Большое спасибо!!