我有一个简单的 Powershell 脚本,它使用一些过滤器收集 Exchange 邮件跟踪结果,然后返回主题中带有“*SPAM*”的项目。为此,我采用一组 Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent 对象并将其通过管道传送到检查每个条目的 MessageSubject 属性的“位置”。
我发现当我使用以下内容比较 MessageSubject 属性时,代码需要很长时间(几小时)才能完成约 70,000 条记录:
($_.messagesubject -like '`*SPAM`*')
但是,当我使用以下内容时,完成时间以秒为单位:
($_.messagesubject -match [regex]'^\*SPAM\*.*$')
我正在努力确定前者需要更长处理时间的具体原因。两种方法都不需要循环相同数量的对象吗?逐字符比较(for -like)与编译正则表达式的区别是什么?(用于匹配)