我有收集Exchange郵件跟蹤使用一些過濾的結果,然後在主題「* SPAM *」的項目返回一個簡單的PowerShell腳本。要做到這一點,我採取Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent對象和管它的一個「地點」的陣列,它檢查每個條目的屬性MessageSubject。PowerShell的條件效率:-match與樣
我發現,當我用比較MessageSubject屬性下面,代碼需要一個非常長的時間(小時)完成〜70000次的記錄:
($ _ messagesubject樣「`* SPAM '* ')
然而,當我使用下面的完成時間以秒爲單位。
($ _ messagesubject -match [正則表達式]'^\ * SPAM \ *。* $「)
。我得到在我頭上試圖確定具體原因FO rmer需要很長的時間來處理。兩種方法都不需要遍歷相同數量的對象嗎?字符之間的比較(類似於)與編譯的正則表達式有何不同? (對於-match)
首先,你的正則表達式不等於通配符。 '^ \ *'表示一行開頭的星號。等效的正則表達式模式只是'垃圾郵件'。 –
我本來應該更清楚:電子郵件的主題總是以\ * SPAM開始\ *。 – visualtrey