使用Where-Object过滤邮件传输规则报告失效问题求助
解决Where-Object过滤SenderAddress失效的问题
你遇到的问题核心是用错了运算符:-NotContains是用来判断集合是否包含指定元素的,而SenderAddress是单个字符串类型的属性,不是集合,所以这个过滤逻辑完全不生效,自然筛不掉包含目标域名的记录。
正确的写法需要用字符串匹配类运算符,以下两种方案都可以:
方案1:使用-notlike(通配符匹配)
Get-MailDetailTransportRuleReport -StartDate 08/25/2022 -EndDate 09/07/2022 | Where-Object { $_.SenderAddress -notlike "*@EMAIL-DOMAIN-HERE" } | fl Date, Subject, Direction, SenderAddress, RecipientAddress, TransportRule
*是通配符,代表任意长度的前缀,能匹配所有以@EMAIL-DOMAIN-HERE结尾的邮箱地址。
方案2:使用-notmatch(正则精确匹配)
Get-MailDetailTransportRuleReport -StartDate 08/25/2022 -EndDate 09/07/2022 | Where-Object { $_.SenderAddress -notmatch "@EMAIL-DOMAIN-HERE$" } | fl Date, Subject, Direction, SenderAddress, RecipientAddress, TransportRule
正则中的$表示匹配字符串结尾,能更精确地过滤掉域名后缀完全匹配的地址,避免误筛包含该域名片段的其他邮箱。
另外注意:Where-Object的简化参数语法(-Property SenderAddress -NotContains ...)只适用于集合类型的属性判断,处理字符串匹配必须用脚本块语法({})来引用属性并执行匹配逻辑。
内容的提问来源于stack exchange,提问作者Wise
相关产品推荐
相关产品推荐

