1

Я использую следующий код, чтобы получить всех участников группы.Поиск участников в группе Дистрибуция Exchange

Проблемы есть, некоторые из групп имеют более 1000 членов. Поэтому вместо того, чтобы загружать все записи, есть лучший способ, чтобы я мог фильтровать результат, чтобы видеть только те элементы, которые мне нужны.

Я хотел бы искать по Primary Email и Display Name.

Мои версии Exchange: 2010 и 2013.

ответ

0

Для обоих Exchange 2010 и 2013 вы можете найти по адресу электронной почты, создавая список адресов электронной почты в regex виде разделенных |. Затем используйте -imatch, чтобы соответствовать адресам электронной почты, в которых вы нуждаетесь. Примечание: Это будет выполнять поиск как первичного, так и вторичного адресов.

$EmailAddress = [regex]"[email protected]|[email protected]|[email protected]" 
Get-DistributionGroupMember -Identity "Marketing USA" | Where { $_.EmailAddresses.SmtpAddress -imatch $EmailAddress } 

Затем поиск по названию дисплея вы можете все так использовать regex таким же образом, разделяющие имена, |.

$DisplayName = [regex]"FirstName1 LastName1|FirstName2 LastName2|FirstName3 LastName3" 
Get-DistributionGroupMember -Identity "Marketing USA" | Where { $_.DisplayName -imatch $DisplayName } 

С помощью этого метода фильтрации вы также можете выполнять частичный поиск. Если вы только указали имя пользователя, вы вернете всех пользователей с этим именем. То же самое будет искать адрес электронной почты.

+0

Уже пробовал и кажется, что производительность плохая. Действительно ли запись будет загружаться в память сначала после того, как она будет фильтроваться? – Chuki2

+0

'Get-DistributionGroupMember' выводит члены один за другим в командлет' Where', который будет фильтровать результаты, поэтому не более 1 записи сортируются в памяти. Я думаю, вы будете бороться, чтобы найти более быстрый путь. – Richard

0

Согласно документации по умолчанию размер результата ограничен 1000. Вам необходимо будет указать -ResultSize Unlimited, например. Get-DistributionGroupMember -Identity "Marketing USA" -ResultSize Unlimited, чтобы вернуть больше, чем это.

+0

Я не хочу загружать все записи, я хочу искать только членов. – Chuki2

+0

Если человек, которого вы хотите совместить, является лицом 1001 в группе распределения, и вы просматриваете только первые 1000 человек в этой группе, вы никогда не увидите человека, которого ищете. Я не хочу украсть то, что написал @Richard, но вам придется объединить '-ResultSize Unlimited' с тем, что он ответил, чтобы искать против всех членов в вашем списке рассылки, если в этом списке больше 1000 членов. – JBaldridge

0

Группа распределения также является группой AD. С помощью командлета Get-ADGroup вы также получаете возможность фильтровать поиск гораздо более эффективным способом.

Например:

Get-ADgroup -Filter {ProxyAddresses -как "SMTP: [email protected]"} (или использовать атрибут почты, если это совпадает с основной адрес электронной почты в вашем орг)

или

Get-ADgroup -Filter {DisplayName -eq "MyDL"} -properties *

для использования этой команды вам, возможно, потребуется загрузить модуль пса ActiveDirectory с «импортом-модулем Actived «сначала» в сеансе PowerShell.