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

แสดงรายการและลบกิจกรรมในปฏิทินออกจากกล่องจดหมาย Exchange ด้วย PowerShell


PowerShell ช่วยให้คุณเข้าถึงรายการกิจกรรมและการประชุมในปฏิทินของผู้ใช้ Exchange ในโพสต์นี้ เราจะดูวิธีรับรายการกิจกรรมในปฏิทินหรือลบกิจกรรม/การนัดหมายเฉพาะออกจากปฏิทินของผู้ใช้ทั้งหมดบน Exchange Server หรือองค์กร Microsoft 365

วิธีแสดงรายการและอ่านกิจกรรมในปฏิทินของผู้ใช้ใน Exchange Online (Microsoft 365)

ขั้นแรก มาดูวิธีรับรายการกิจกรรมในปฏิทินในกล่องจดหมายของผู้ใช้ Exchange Online (Microsoft 365) Microsoft Graph API สามารถดึงข้อมูลเกี่ยวกับรายการในปฏิทินของผู้ใช้ได้ เริ่มต้นด้วยการลงทะเบียนแอปพลิเคชันใหม่ใน Azure (Microsoft Entra ID -> การลงทะเบียนแอป -> การลงทะเบียนใหม่) และให้สิทธิ์ Microsoft Graph ต่อไปนี้:

Calendars.Read

และ

Calendars.ReadBasic.All

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการลงทะเบียนแอปพลิเคชันใน Azure และการให้สิทธิ์ Microsoft Graph โปรดดูโพสต์วิธีเชื่อมต่อกับ Microsoft Graph ด้วย PowerShell

ตอนนี้คุณสามารถใช้โมดูล Microsoft.Graph เพื่อเชื่อมต่อกับผู้เช่า Microsoft 365 ในตัวอย่างนี้ เราจะใช้การรับรองความถูกต้องของ Azure ตามใบรับรองใน PowerShell

$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581"
$AzureAppID = "111111-2222-3333-4444-12345678"
$tenant="a-d.onmicrosoft.com"
Connect-MgGraph -AppId $AzureAppID -CertificateThumbprint $certThumbprint -TenantId $tenant

หากไม่มีโมดูล Microsoft.Graph ให้ติดตั้ง:

Install-Module Microsoft.Graph -Scope AllUsers

หากต้องการดูกิจกรรมในปฏิทินของผู้ใช้รายใดรายหนึ่งสำหรับเดือนปัจจุบัน:

$StartDate = (Get-Date -Day 1)
$EndDate = (Get-Date -Day 1).Addmonths(1)
Get-MgUserCalendarView -UserId [email  -CalendarId "Calendar" -StartDateTime $StartDate -EndDateTime $EndDate | Select-Object -Property @{Name='EventStart';Expression={ $_.Start.DateTime}},@{Name='EventEnd';Expression={ $_.End.DateTime}},Subject, BodyPreview

คำสั่งส่งคืนหัวข้อเหตุการณ์ เนื้อหา (การแสดงตัวอย่างเนื้อหา) และเวลาเริ่มต้น/สิ้นสุด

การลบกิจกรรมออกจากปฏิทิน Exchange โดยใช้ PowerShell

ใช้ Remove-CalendarEvents cmdlet เพื่อยกเลิก (ลบ) กิจกรรม (การนัดหมาย การประชุม) ในปฏิทิน Exchange ใช้งานได้กับทั้งองค์กร Exchange Online และ Exchange Server 2019

เปิดคอนโซล PowerShell และเชื่อมต่อกับผู้เช่า Exchange Online ของคุณ (โดยใช้โมดูล Exchange Online PowerShell) หรือโฮสต์ Exchange Server

ลบกิจกรรมที่กำลังจะเกิดขึ้นทั้งหมด (ภายใน 15 วันข้างหน้า) ออกจากปฏิทินของผู้ใช้ที่พวกเขาเป็นผู้จัด:

Remove-CalendarEvents -Identity [email  -CancelOrganizedMeetings -QueryWindowInDays 15

หรือคุณสามารถลบกิจกรรมทั้งหมดโดยเริ่มจากวันที่ที่ระบุ:

Remove-CalendarEvents -Identity [email  -CancelOrganizedMeetings -QueryStartDate 04-10-2023 -QueryWindowInDays 60

คุณสามารถใช้

-PreviewOnly -Verbose

ตัวเลือกเพื่อดูรายการเหตุการณ์ดังกล่าวโดยไม่ต้องลบออก

ข้อเสียเปรียบหลักของ Remove-CalendarEvents cmdlet คือ สามารถลบกิจกรรมในปฏิทินที่กำลังจะมาถึงเท่านั้น และไม่อนุญาตให้คุณเลือกกิจกรรมตามหัวเรื่อง ผู้จัด เนื้อหา หรือคุณสมบัติอื่นใด การใช้งาน Remove-CalendarEvents ที่พบบ่อยที่สุดคือการล้างปฏิทินกิจกรรมของผู้ใช้ที่สร้างขึ้นโดยพนักงานที่ถูกไล่ออก ลาป่วย หรือลาพักร้อนอย่างรวดเร็ว

หากคุณต้องการลบกิจกรรมที่ผ่านมา หรือหากคุณใช้ Exchange Server 2016/2013/2010 ภายในองค์กร คุณสามารถใช้ Search-Mailbox หรือ New-ComplianceSearch cmdlets เพื่อค้นหาและลบรายการในกล่องเมล Exchange

ตัวอย่างเช่น บน Exchange Server คุณสามารถค้นหากิจกรรมในปฏิทินที่มีหัวข้อเฉพาะดังนี้:

Search-Mailbox -Identity [email  -SearchQuery {Subject:"Discuss: AD Schema Update" AND Kind:meetings AND Received:01/12/2023..15/01/2024} -TargetMailbox report_mbx -TargetFolder SearchMailboxResult -LogOnly -LogLevel Full

คำสั่งนี้จะค้นหาเหตุการณ์ในกล่องจดหมายของผู้ใช้และบันทึกผลลัพธ์ไว้ในโฟลเดอร์ SearchMailboxResult ของกล่องจดหมาย report_mbx

ในกรณีที่คุณต้องการลบเหตุการณ์ที่พบ ให้แทนที่พารามิเตอร์สุดท้ายด้วย -DeleteContent ต่อไปนี้เป็นวิธีลบกิจกรรมทั้งหมดในปฏิทินของผู้ใช้:

SearchMailbox -identity [email  -SearchQuery kind:meetings -DeleteContent

ใน Exchange Online นั้น SearchMailbox cmdlet เลิกใช้แล้ว และคุณต้องใช้ cmdlet ของ ComplianceSearch แทน ตัวอย่างเช่น หากต้องการค้นหาเหตุการณ์ทั้งหมดที่มีหัวเรื่องเฉพาะในกล่องจดหมายทั้งหมด ให้รันคำสั่ง:

New-ComplianceSearch -Name DeleteITMeeting -ContentMatchQuery "kind:meetings AND subject:weekly_it_meeting" -ExchangeLocation all
Start-ComplianceSearch -identity DeleteITMeeting
Get-ComplianceSearc -identity DeleteITMeeting | fl

เมื่องานเสร็จสิ้น (

Status=Completed

) คุณสามารถลบกิจกรรมที่พบได้:

New-ComplianceSearchAction -SearchName DeleteITMeeting -Purge

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