首页 > 解决方案 > 使用过滤器查找与域匹配的电子邮件地址

问题描述

我正在尝试使用 PowerShell 在 O365 Exchange 中查找与特定域匹配的电子邮件地址。

如果我使用:

Get-Recipient -ResultSize unlimited -filter '(PrimarySMTPAddress -like "*smith*")' | fl primarysmtpaddress

我得到了所有有字符串的地址

如果我使用:

Get-Recipient -ResultSize unlimited -filter '(PrimarySMTPAddress -like "*@domain*")' | fl primarysmtpaddress

我没有得到任何结果。

@ 之后似乎没有任何匹配项。

我想使用-filter而不是 where 语句,因为它要快得多。

标签: powershellexchange-server

解决方案


我能够重现您的问题。它似乎与您过滤的特定属性“PrimarySMTPAddress”有关。

我能够通过将过滤器语句更改为利用“EmailAddresses”(电子邮件地址存储在其中的另一个属性)来获取过滤器语句以返回结果:

Get-Recipient -ResultSize unlimited -filter '(EmailAddresses -like "*@domain*")' | fl primarysmtpaddress

我看到的其他一些注意事项:“可过滤属性”文档提到避免使用“PrimarySMTPAddress”是我不知道的另一个原因:

不要使用 PrimarySmtpAddress 属性;请改用 EmailAddresses 属性。任何使用 PrimarySmtpAddress 属性的过滤器也将搜索 EmailAddresses 属性中的值。例如,如果邮箱具有主电子邮件地址 dario@contoso.com,以及其他代理地址 dario2@contoso.com 和 dario3@contoso.com,则以下所有筛选器都将在结果中返回该邮箱:“PrimarySmtpAddress - eq 'dario@contoso.com'”、“PrimarySmtpAddress -eq 'dario2@contoso.com'”或“PrimarySmtpAddress -eq 'dario3@contoso.com'”。

来源 https://docs.microsoft.com/en-us/powershell/exchange/filter-properties?view=exchange-ps


推荐阅读