Я пытался понять это, как изменить proxyAddresses некоторых из моих пользователей в AD с помощью PowerShell. Моя основная цель состоит в том, чтобы использовать Get-ADObject для запроса AD для определенного набора пользователей и удалить все SMTP-адреса для определенного домена из proxyAddresses пользователя (если он существует).
$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)? Я не знаю, я пробовал майские способы, но безуспешно.
спасибо!!