สร้างรายงานการใช้งานกล่องจดหมายด้วย Microsoft Graph PowerShell
รายงานการใช้งานใน Microsoft 365 เช่น รายงานการใช้งาน OneDrive, SharePoint และกล่องจดหมาย เป็นวิธีที่สะดวกในการรับภาพรวมอย่างรวดเร็วของการใช้พื้นที่เก็บข้อมูลในผู้เช่าของคุณ ปัญหาหนึ่งที่เกิดขึ้นในการถามตอบของ Microsoft คือรายงานเหล่านี้ไม่สามารถกำหนดค่าให้ส่งถึงคุณโดยอัตโนมัติทางอีเมลตามระยะเวลาที่กำหนด โดยเฉพาะรายงานการใช้กล่องจดหมาย Exchange Online
วิธีแก้ไขปัญหานี้คือการสร้างรายงานเดียวกันโดยใช้ Microsoft Graph PowerShell ก่อน เมื่อสร้างรายงานแล้ว คุณจะมีความยืดหยุ่นในการส่งผ่านทางอีเมลหรือวางลงในการแชร์ไฟล์เพื่ออ่านในภายหลัง
ในบล็อกนี้ ฉันจะแสดงวิธีใช้ Microsoft Graph PowerShell เพื่อสร้างรายงานการใช้งานกล่องจดหมาย Exchange Online จาก Microsoft 365
ความต้องการ
- คุณต้องติดตั้งโมดูล Microsoft Graph PowerShell ล่าสุด ดูวิธีการติดตั้งโมดูล Microsoft Graph PowerShell
- คุณต้องยินยอมตามการอนุญาตต่อไปนี้: Reports.Read.All สิ่งนี้จะต้องมีบัญชีผู้ดูแลระบบทั่วโลก
รายงานการใช้งาน Exchange Online
ด้านล่างนี้เป็นสคริปต์สั้นๆ ซึ่งจะสร้างรายงานการใช้กล่องจดหมายสำหรับกล่องจดหมาย Exchange ออนไลน์ทั้งหมดในองค์กรของคุณ รายงานนี้จะเน้นจำนวนพื้นที่เก็บข้อมูลทั้งหมดที่ใช้สำหรับกล่องจดหมายแต่ละกล่องเป็นไบต์ จากนั้นจะแปลงตัวเลขนั้นเป็นเมกะไบต์เพื่อให้อ่านง่าย สิ่งนี้มีประโยชน์ในสถานการณ์การย้ายข้อมูลหรือในระหว่างการประเมินสิทธิ์การใช้งาน แม้ว่าช่วงเวลาจะไม่เกี่ยวข้องกับรายงานนี้ แต่เพื่อเพิ่มความสับสน คุณยังคงต้องกำหนดระยะเวลาการใช้งาน แม้ว่าจะไม่ส่งผลกระทบต่อผลลัพธ์ก็ตาม
สำหรับสคริปต์ด้านล่างแต่ละตัว ให้แก้ไขตัวแปร $path เพื่อให้ตรงกับตำแหน่งที่คุณต้องการส่งออกผลลัพธ์
รายงานการใช้กล่องจดหมาย
Connect-MgGraph -scopes Reports.Read.All
$path = "C:\temp\MailboxReport.csv"
Get-MgReportMailboxUsageDetail -Period D7 -OutFile $path
$report = import-csv $path
$report.Foreach({
$_."storage used (Byte)" = '{0:N2} MB' -f ($_."storage used (Byte)" / 1MB)
})
$report | Export-CSV -Path $path -NoTypeInformationcmdlet รายงานการใช้งาน Microsoft Graph PowerShell ทั้งหมด
มีรายงาน Microsoft ที่เกี่ยวข้องอื่น ๆ อีกมากมายที่คุณสามารถสร้างได้โดยใช้ PowerShell ซึ่งบางรายงานมีประโยชน์ตามระยะเวลาการใช้งานและบางรายงานก็ยังไม่มี ด้านล่างนี้คือรายการ cmdlet ของรายงานการใช้งานทั้งหมดที่แบ่งออกเป็นส่วนๆ
พิมพ์
Get-MgReportDailyPrintUsageByPrinter
Get-MgReportDailyPrintUsageByPrinterCount
Get-MgReportDailyPrintUsageByUser
Get-MgReportDailyPrintUsageByUserCount
Get-MgReportMonthlyPrintUsageByPrinter
Get-MgReportMon thlyPrintUsageByPrinterCount
รับ-MgReportMonthlyPrintUsageByUser
รับ-MgReportMonthlyPrintUsageByUserCount
จดหมาย
Get-MgReportEmailAppUsageAppUserCount
Get-MgReportEmailAppUsageUserCount
Get-MgReportEmailAppUsageUserDetail
Get-MgReportEmailAppUsageUserCount
Get-MgReportMailboxUsageDetail
Get-MgReportMailboxUsageMailbox นับ
รับ-MgReportMailboxUsageQuotaStatusMailboxCount
รับ-MgReportMailboxUsageStorage
OneDrive
รับ-MgReportOneDriveUsageAccountCount
รับ-MgReportOneDriveUsageAccountDetail
รับ-MgReportOneDriveUsageFileCount
รับ-MgReportOneDriveUsageStorage
SharePoint
Get-MgReportSharePointSiteUsageDetail
Get-MgReportSharePointSiteUsageFileCount
Get-MgReportSharePointSiteUsagePage
Get-MgReportSharePointSiteUsageSiteCount
Get-MgReportSharePointSiteUsageStorage
อุปกรณ์ของทีม
Get-MgReportSkypeForBusinessDeviceUsageDistributionUserCount
Get-MgReportSkypeForBusinessDeviceUsageUserCount
Get-MgReportSkypeForBusinessDeviceUsageUserDetail
Get-MgReportTeamDeviceUsageDistributionUserCount
Get-MgReportTeamDeviceUsageUserCount
รับ- MgReportTeamDeviceUsageUserDetail
Yammer
รับ-MgReportYammerDeviceUsageDistributionUserCount
รับ-MgReportYammerDeviceUsageUserCount
ระยะเวลาการรายงาน
ระยะเวลารายงานที่ได้รับการสนับสนุนสำหรับ Microsoft Graph PowerShell ตรงกับระยะเวลาที่ได้รับการสนับสนุนผ่านศูนย์การจัดการ Microsoft 365 ด้านล่างนี้คือระยะเวลาการใช้งานที่รองรับเป็นวัน:
- D7
- D30
- D90
- D180
จัดทำรายงานอัตโนมัติทางอีเมล
แต่ละรายงานสามารถส่งโดยอัตโนมัติทางอีเมลไปยังกล่องจดหมายของผู้ใช้ กลุ่ม หรือกล่องจดหมายที่ใช้ร่วมกัน เพื่อให้บรรลุเป้าหมายนี้ สามารถส่งอีเมลได้โดยใช้ Microsoft Graph และอัตโนมัติโดยใช้ Microsoft Graph PowerShell นี่คือตัวอย่างโค้ดที่ฉันใช้ในการส่งอีเมลโดยใช้ Microsoft Graph PowerShell:
(Send-MgUserMail cmdlet นี้พบได้ในโมดูล Microsoft.Graph.Users.Actions และจำเป็นต้องได้รับความยินยอมจาก mail.send )
$Attachment = %filepath%
$MailAttachement = [Convert]::ToBase64String([IO.File]::ReadAllBytes($Attachment))
$body = @{
message = @{
subject = "Org Mailbox Report"
body = @{
contentType = "Text"
content = "Please see the attached"
}
toRecipients = @(
@{
emailAddress = @{
address = "%TO ADDRESS%"
}
}
)
attachments = @(
@{
"@odata.type" = "#microsoft.graph.fileAttachment"
name = "$Attachment"
contentType = "text/plain"
contentBytes = $MailAttachement
}
)
}
saveToSentItems = "false"
}
Send-MgUserMail -UserId $from -BodyParameter $body
กระบวนการนี้สามารถเป็นแบบอัตโนมัติได้โดยใช้ Azure Automation เพื่อให้แน่ใจว่ากระบวนการทำงานอย่างปลอดภัยและไม่ได้มาจากเซิร์ฟเวอร์จริงหรือเสมือน กระบวนการนี้ฉันได้กล่าวถึงโดยละเอียดในบล็อกของฉัน วิธีเรียกใช้สคริปต์ Microsoft Graph PowerShell ด้วย Azure Automation