いくつかのフィルターを使用して Exchange メッセージ追跡結果を収集し、件名に「*SPAM*」を含むアイテムを返す単純な Powershell スクリプトがあります。そのために、Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent オブジェクトの配列を取得し、各エントリの MessageSubject プロパティをチェックする 'where' にパイプします。
MessageSubject プロパティを比較するために以下を使用すると、コードが 70,000 レコードまで完了するのに非常に長い時間 (時間) かかることがわかりました。
($_.messagesubject -like '`*SPAM`*')
ただし、次を使用すると、完了時間は秒単位です。
($_.messagesubject -match [regex]'^\*SPAM\*.*$')
前者の処理に時間がかかる特定の理由を特定しようとして、頭がいっぱいになっています。両方のメソッドが同じ数のオブジェクトをループする必要はありませんか? 文字ごとの比較 (-like) とコンパイルされた正規表現の違いはありますか? (-マッチ用)