แสดงรายการและลบกิจกรรมในปฏิทินออกจากกล่องจดหมาย 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
