ค้นหาเว็บไซต์

Get-MessageTrackingLog: ค้นหาบันทึกการติดตามข้อความบน Exchange Server


คุณสามารถใช้ cmdlet Get-MessageTrackingLog ใน Exchange Management Shell เพื่อวิเคราะห์การรับส่งอีเมล การตรวจสอบข้อเท็จจริงของข้อความ และรับข้อมูลต่างๆ เกี่ยวกับข้อความที่ส่งหรือรับโดยกล่องจดหมายที่ระบุในองค์กรอีเมลของคุณ ในบทความนี้ ผมจะแสดงตัวอย่างคำสั่ง PowerShell แบบ one-liner หลายๆ ตัวอย่าง ซึ่งผมมักจะใช้เพื่อติดตามข้อความบน Exchange Server 2016/2013/2010 และ Office 365 (Exchange Online)

ฉันขอเตือนคุณว่าบันทึกการขนส่ง Exchange อยู่ใน

%ExchangeInstallPath%TransportRoles\Logs\MessageTracking

โฟลเดอร์ และวิธีที่มีประสิทธิภาพและยืดหยุ่นที่สุดในการวิเคราะห์บันทึกการติดตามข้อความใน Exchange คือการใช้ Get-MessageTrackingLog cmdlet

ก่อนอื่น ให้พิจารณาพารามิเตอร์ Get-MessageTrackingLog หลักที่คุณสามารถใช้เพื่อกรองเหตุการณ์ในบันทึก พารามิเตอร์ cmdlet ต่อไปนี้ถูกใช้บ่อยที่สุด:

Sender

- ค้นหาตามผู้ส่ง

Recipients

— ค้นหาตามผู้รับ

Server

- ค้นหาบนเซิร์ฟเวอร์การขนส่งเฉพาะ

Start “11/30/2019 08:00:00” -End “12/18/2019 21:00:00”

— ค้นหาตามระยะเวลาที่กำหนด

MessageSubject

— ค้นหาตามหัวข้อข้อความ

EventID

- ค้นหาตามเหตุการณ์ Exchange (ตามกฎแล้วจะใช้รหัสต่อไปนี้: RECEIVE, SEND, FAIL, DSN, DELIVER, BADMAIL, RESOLVE, EXPAND, REDIRECT, TRANSFER, SUBMIT, POISONMESSAGE, DEFER);

messageID

- ติดตามด้วยรหัสข้อความ

หากคุณเรียกใช้ Get-MessageTrackingLog cmdlet โดยไม่มีพารามิเตอร์ เหตุการณ์ทั้งหมดจากบันทึกการขนส่ง Exchange สำหรับ 30 วันที่ผ่านมาจะแสดงขึ้น cmdlet แสดง 1,000 เหตุการณ์ล่าสุดเท่านั้น หากต้องการลบข้อจำกัดนี้ ให้ใช้ปุ่ม

-ResultSize Unlimited

พารามิเตอร์. (ไม่แนะนำให้ทำโดยไม่มีพารามิเตอร์ตัวกรองเพิ่มเติมเนื่องจากเซิร์ฟเวอร์การขนส่งของคุณอาจมีโหลดสูง)

คุณสามารถแสดงข้อมูลเกี่ยวกับกิจกรรม Exchange ทีละหน้าโดยใช้คำสั่งนี้:

Get-MessageTrackingLog | Out-Host -Paging

ในการแสดงข้อมูลในรูปแบบตารางและปรับความกว้างของคอลัมน์ จะใช้ Format-Table cmdlet:

Get-MessageTrackingLog | Format-Table -AutoSize

หากใช้เซิร์ฟเวอร์ Hub Transport หลายตัวในองค์กร Exchange ของคุณ คุณจะต้องระบุชื่อเซิร์ฟเวอร์เพื่อค้นหาเป็นอาร์กิวเมนต์ของ

-Server

พารามิเตอร์ หรือรันคำสั่งติดตามข้อความสำหรับแต่ละเซิร์ฟเวอร์ Hub Transport ของคุณด้วยไพพ์:

Get-TransportServer | Get-MessageTrackingLog

แสดงอีเมลทั้งหมดในช่วง 24 ชั่วโมงที่ผ่านมา (

(Get-Date).AddHours(-24)

) ซึ่งระบุผู้รับจากโดเมน @gmail.com:

Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.recipients -like "*@gmail.com"}

หากต้องการแสดงอีเมลทั้งหมดที่ส่งโดยผู้ใช้ที่ระบุผ่านเซิร์ฟเวอร์เฉพาะในช่วงเวลาที่กำหนด ให้ใช้คำสั่งด้านล่าง (เฉพาะฟิลด์ติดตามที่ระบุเท่านั้นที่จะแสดงในรายงาน):

Get-MessageTrackingLog -ResultSize unlimited -Sender "cmansion@a-d.site” -server rome-hub-01 -Start "11/30/2019 06:00:00" -End "12/13/2019 22:00:00" |select-object Timestamp,Sender,Recipients,MessageSubject,EventId|ft

ค้นหาอีเมลทั้งหมดที่ผู้ใช้ส่งถึงอีกอีเมลหนึ่งและส่งออกผลการค้นหาเป็นไฟล์ CSV:

Get-MessageTrackingLog -Sender "cmansion@a-d.site" -Recipients "amorato@a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender,{$_.recipients},MessageSubject | Export-Csv -Path "C:\Export\exchange\exchange_tracking_logs.csv" -Encoding Default -Delimiter ";"

คุณสามารถค้นหาตามหัวข้อข้อความ หากต้องการแสดงอีเมลทั้งหมดที่มีคำว่า "ทดสอบ" ในช่องหัวเรื่อง ให้รันคำสั่งต่อไปนี้ (หากต้องการแสดงผลในหน้าต่างกราฟิกแยกต่างหากในรูปแบบตารางที่มีคุณลักษณะการเรียงลำดับ การกรอง และการค้นหาที่สะดวก คุณสามารถใช้ cmdlet Out-gridview)

Get-MessageTrackingLog -MessageSubject "test" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject | out-gridview

คุณสามารถค้นหาด้วยรหัสข้อความเฉพาะ (ได้จากส่วนหัวของข้อความใน Outlook):

Get-MessageTrackingLog -messageID "41A4321C3543314FFFFF23122F2BDB7ABD00342@rome-hub-01.a-d.site" -ResultSize unlimited -server rome-hub-01| Select-Object Timestamp,Sender, {$_.recipients}, MessageSubject

เมื่อต้องการนับจำนวนข้อความอีเมลขาเข้าสำหรับกล่องจดหมายที่ระบุในช่วง 7 วันที่ผ่านมา ให้รันคำสั่งต่อไปนี้:

(Get-MessageTrackingLog -EventID "RECEIVE" -Recipients "amorato@a-d.site" -ResultSize unlimited).Count

คุณสามารถแสดงสถิติข้อความที่น่าสนใจยิ่งขึ้น ตัวอย่างเช่น คุณต้องการดูจำนวนอีเมลจากผู้ส่งที่แตกต่างกันจาก

gmail.com

ได้รับจากผู้ใช้ในบริษัทของคุณในช่วง 5 วันที่ผ่านมา (เราจะแสดงจำนวนอีเมลทั้งหมดที่ส่งโดยผู้ส่งภายนอกแต่ละราย):

Get-MessageTrackingLog -EventId "Receive" -Start (Get-Date).AddDays(-5) -ResultSize Unlimited | Where-Object {$_.Sender -like "*@gmail.com"} | Group-Object Sender | Sort-Object Count -Descending | Format-Table *

หากต้องการค้นหาอีเมลที่จัดเก็บไว้ในกล่องจดหมายของผู้ใช้ Exchange ให้ใช้ cmdlet ค้นหากล่องจดหมาย

Office 365 อนุญาตให้คุณค้นหาบันทึกการติดตามข้อความจาก Exchange Admin Center (EAC) ไปที่ Mail Flow -> การติดตามข้อความ กรอกข้อมูลในช่องค้นหา นี่คือเว็บอินเทอร์เฟซสำหรับ Get-MessageTrackingLog cmdlet ซึ่งอนุญาตให้ผู้ใช้สร้างคำสั่งติดตาม PowerShell ในเว็บฟอร์มอย่างง่าย

วิธีการที่พิจารณาข้างต้นจะช่วยให้คุณได้รับสถิติเกี่ยวกับข้อความที่ส่งและรับในระบบ Exchange ของคุณและวินิจฉัยปัญหาการรับส่งอีเมลต่างๆ

บทความที่เกี่ยวข้อง