PowerShell-удаляет определенные SMTP-адреса из массива proxyAddresses

Я пытался понять это, как изменить 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)? Я не знаю, я пробовал майские способы, но безуспешно.

спасибо!!

29
задан STGdb
10.01.2023 9:35 Количество просмотров материала 2548
Распечатать страницу

1 ответ

Split для разделения строк; свойство ProxyAddresses объекта пользователя не является строкой, поэтому оно не поддерживает "Split".

попробуйте что-то вроде этого (совершенно непроверенные :) ):

ForEach ($userObject in $ADobjects)
{
  ForEach ($proxyAddress in $userObject.ProxyAddresses)
  {
    write-host $proxyAddress
  }
}
1
отвечен Ƭᴇcʜιᴇ007 2023-01-11 17:23

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх