41 lines
1.9 KiB
PowerShell
41 lines
1.9 KiB
PowerShell
<#
|
||
.SYNOPSIS
|
||
Count the number of received emails in a Microsoft 365 mailbox during a specified time window.
|
||
|
||
.DESCRIPTION
|
||
This script queries Exchange Online via Microsoft Graph to return the total count of emails
|
||
received by a specific mailbox within a given date range. It searches all folders in the mailbox
|
||
(including Inbox, subfolders, Junk, and Deleted Items), ensuring that emails moved after delivery
|
||
are still included in the count. Drafts are excluded, and self-sent messages from the mailbox
|
||
owner are not counted as "received."
|
||
|
||
Date boundaries are applied using local time (Eastern Time in this example).
|
||
Adjust offsets (-05:00 / -04:00) for daylight savings or your region.
|
||
|
||
.PARAMETER $u
|
||
The target user’s email address. Example: 'f@d.org'
|
||
|
||
.PARAMETER $start
|
||
The inclusive start of the time window in ISO 8601 format with time zone offset.
|
||
Example: '2025-01-01T00:00:00-05:00' for January 1st, 2025, 12:00 AM ET.
|
||
|
||
.PARAMETER $end
|
||
The exclusive end of the time window in ISO 8601 format with time zone offset.
|
||
Example: '2025-02-01T00:00:00-05:00' for February 1st, 2025, 12:00 AM ET.
|
||
|
||
.OUTPUTS
|
||
Returns a single integer representing the count of received messages.
|
||
|
||
.NOTES
|
||
Requirements:
|
||
- Microsoft.Graph PowerShell module
|
||
- Connect-MgGraph with Mail.Read delegated permission (if signed in as the user)
|
||
OR Mail.Read application permission (with admin consent) if run as a service.
|
||
|
||
Example to install module: Install-Module Microsoft.Graph
|
||
Example to connect: Connect-MgGraph -Scopes Mail.Read
|
||
|
||
(c) 2025 Robbie Ferguson. All rights reserved.
|
||
#>
|
||
|
||
$u='mailbox@domain.com';$start='2025-01-01T00:00:00-05:00';$end='2025-02-01T00:00:00-05:00';$c=0; Get-MgUserMessage -UserId $u -Filter "receivedDateTime ge $start and receivedDateTime lt $end and isDraft eq false and (from/emailAddress/address ne '$u')" -CountVariable c -ConsistencyLevel eventual -PageSize 1 | Out-Null; $c |