Exchange 2016 New-Mailboxsearch KQL 查詢幫助 - 這可能嗎?(X 或 Y) 不是 (Z 除非也是 X)
提前感謝您的閱讀和您可以提供的任何幫助!
我正在嘗試對多個郵箱進行郵箱搜尋。我需要找到所有提及某些單詞並且不提及其他單詞的消息,除非這些單詞在兩個列表中。這是一個複雜的搜尋。我不知道如何扭曲關鍵字查詢語言邏輯來實現這一點。
我認識到搜尋命令會很複雜並且需要很長時間才能執行。沒關係。
範例:
搜尋提及泰迪的項目。
我想要提到羅斯福的項目。我想要提及 mugwump 的
項目 我想要提及 Rough Riders 的項目
我不想要提及 Franklin Roosevelt 的任何項目。
但是如果一條消息同時提到了泰迪和富蘭克林,我需要那個。
我不想要任何關於“新政”的主題
我不想要任何提到杜魯門的東西。
我想包括萬用字元。
搜尋“羅斯福”肯定會找到“富蘭克林”。我不能單方面排除“富蘭克林”而不錯過一些“泰迪”
我目前的查詢:
New-MailboxSearch -SearchQuery "Teddy* OR mugwump* OR Roosevelt* OR 'Rough Riders*' NOT ((Franklin* NOT Teddy*) OR Truman* OR subject:'new-deal')"
跑了上面的搜尋。獲得 9,500 次點擊。我發現了一些帶有“mugwump”和“franklin pierce”的電子郵件。這裡有點不對勁。
當我執行“Teddy* OR Roosevelt*”時,我收到了 10,000 次點擊。
當我執行“Teddy* OR Roosevelt* NOT (Franklin* NOT Teddy*)”時,我收到了 9,500 次點擊。所以我認為它有效?
如果這是一個括號問題,我還嘗試了“(Teddy* OR Roosevelt*) NOT (Franklin* NOT Teddy*)”。我仍然收到了 9,500 次點擊。
將積極的搜尋詞括起來並沒有什麼不同。
然後我嘗試了“(泰迪或羅斯福)不是(富蘭克林*)我仍然收到 9,500 次點擊。結果中有富蘭克林的,所以這裡真的有些不對勁。
是報價問題嗎?我找不到關於單引號 ’ ’ 與雙引號 " " 的明確文件,以及它們如何影響搜尋運算符和括號。
微軟的 KQL 文件沒有提到它。大多數 KQL 的 Google 熱門歌曲都是針對 Sharepoint,與 Exchange 相比,Sharepoint 具有不同的傾向(和選項)。許多 Exchange 命中實際上是針對 AQS。
我還沒有找到像我這樣帶有嵌套搜尋詞的複雜 KQL 查詢的好例子……
我嘗試用雙引號交換所有單引號。它使我的結果下降到 4,000。這只是一個-EstimateOnly,我沒有機會執行實際工作並檢查結果。
“NOT (Franklin* NOT Teddy*) 是否會自我否定?
是否有另一種說法,“包括這個,除非它也包括那個”?
有沒有更好的安排括號?
我的報價有問題嗎?
謝謝你的幫助!
我想出了一個解決方案。我想分享我的最後一個問題,以及我在此過程中學到的一些重要教訓。
第 1 課。如何實現多個括號語句
您只能在查詢中使用一個括號。但是,您可以在該查詢中嵌套另一組括號。
範例:會產生
-SearchQuery "(a OR b) AND (c OR d)"
錯誤範例:
-SearchQuery "a AND (b AND (c OR d))"
工作我不知道您是否可以在父級內部使用多個括號,或者您是否可以嵌套第三層。沒必要弄清楚。
第 2 課。多個和/或操作數
坦白說,我從來沒有弄清楚操作數的順序是否會影響 SearchQuery 解析結果的方式。我的最終查詢主要由 OR 語句組成,因此我沒有花任何時間深入研究它。
例如:
-SearchQuery "a AND b OR c AND d"
- 這是否等同於“(a AND b)OR(c AND d)”?
- 或者這相當於“a AND (b OR c) AND d”?
我不知道。沒必要弄清楚。
供未來讀者記住的東西。
第 3 課. 用 {} ‘’ “__” 包裝 -SEARCHQUERY 術語
您可以使用 { }、’ ’ 或 "" 來包裝您的搜尋查詢。
-SearchQuery {wordone OR wordtwo OR "word three"}
-SearchQuery 'wordone OR wordtwo OR "word three"'
-SearchQuery "wordone OR wordtwo OR 'word three'"
我認為每個包裝器在查詢中使用引號/雙引號或萬用字元解析文字術語的方式可能存在一些特殊性。我的現場測試有一些不確定性,這讓我這麼想。
當我創建一個包含一小部分測試消息的測試郵箱進行實驗時,我已經確定了單引號和雙引號。當我弄清楚什麼有效時,這就是我所使用的,所以我再也沒有回去進行進一步的實驗。
TEST MAILBOX
我創建了一個測試郵箱。我向那個郵箱發送了 16 封電子郵件。
每封電子郵件的主題是“(01 到 16)(好或壞)”。
每封電子郵件的正文都包含基於真實範例的各種模式的搜尋詞。
理想的模式電子郵件在主題中使用“Good”,而不理想的則使用“Bad”。
例如:主題:“05 Good”,正文:“Roosevelt mugwump”
例如:主題:“07 Bad”,正文:“Franklin Roosevelt”
例如:主題:“08 Good”,正文:“Teddy Franklin Roosevelt”
如果我的查詢結果退回任何我知道它失敗的“壞”電子郵件。
如果我的查詢結果沒有返回“良好”的電子郵件,我就知道它失敗了。
FINAL -SEARCHQUERY
使用該測試郵箱和上面的課程,我建構了以下查詢:
New-MailboxSearch -Name 2019Feb7test13 -Force -SourceMailboxes user1,user2,user3 -StartDate 1/1/1890 -EndDate 1/1/1940 -SearchQuery 'teddy* OR roosevelt* OR mugwump* OR "rough riders*" NOT (franklin* NOT (teddy* OR mugwump* OR "rough riders")) NOT "new-deal" NOT truman*' -TargetMailbox discoveryresults -TargetFolder 2019Feb7test13 -ExcludeDuplicateMessages $true -LogLevel Full -StatusMailRecipients me
(我的實際查詢比這複雜一點,但這個例子可以說明我的解決方案。)
將這個 -SearchQuery 分開,我們有:
匹配任何一個:泰迪熊、羅斯福、
mugwump
、粗糙的騎手
第一個條件選擇所有“羅斯福”,包括“富蘭克林羅斯福”。
第三個條件丟棄任何帶有“富蘭克林”的東西,但也沒有泰迪、mugwump 或粗野的騎手。
備份計劃
如果我找不到這個問題的解決方案,我的備份計劃將分為兩部分。
不進行任何過濾就進行搜尋。只是積極的或條款。將結果發送到臨時郵箱,而不是發現框。
在該臨時郵箱上執行 Search-Mailbox。找到與我不想要的條款匹配的所有項目,然後使用 -DeleteContent 開關。
這可能會奏效,但需要額外的箍。我對我的解決方案更滿意。