Windows

Exchange Online PowerShell cmdlet 中的萬用字元搜尋

  • August 7, 2021

Exchange Online PowerShell cmdlet 是否支持萬用字元?我想創建一個按郵件地址過濾但無法正常工作的新地址列表。

即使存在具有此類郵件地址的使用者,以下命令也不會產生任何結果:

Get-Recipient -Filter {(Alias -ne $null) -and (PrimarySmtpAddress -like '*@domain.com')}

當我手動輸入整個郵件地址時,它會返回一個結果,因此很明顯萬用字元過濾器不起作用。

那麼不支持萬用字元嗎?如果是這樣,那麼為什麼過濾郵件聯繫人時下面的命令會返回結果?

Get-Recipient -Filter {(Alias- ne $null) -and (ExternalEmailAddress -like '*@domain.com')}

您可能遇到的部分問題是某些屬性不能與Get-Recipient命令的 -Filter 參數一起使用。例如:

Get-Mailbox -Filter {(Alias -ne $null) -and (ExternalEmailAddress -like '*@example.com')}

結果是:

無法將參數“過濾器”綁定到目標。異常設置“過濾器”:“外部電子郵件地址”不是可辨識的可過濾屬性。有關可過濾屬性的完整列表,請參閱命令幫助。

解決此問題的一種方法需要更長的時間來處理,但有效:獲取所有具有別名的收件人,然後使用該Where函式處理查詢的第二部分。生成的命令集如下所示:

(Get-Recipient -Filter {(Alias -ne $null)} -ResultSize Unlimited).Where{$_.EmailAddresses -like "*example.com"}

使用上述方法可以獲得與通過管道傳輸到cmdletWhere相同的結果,但速度更快。Where-Object以下語法將提供相同的結果:

Get-Recipient -Filter {(Alias -ne $null)} -ResultSize Unlimited | Where-Object {$_.EmailAddresses -like "*example.com"}

引用自:https://serverfault.com/questions/1042308