Add message-counter.ps1
This commit is contained in:
41
message-counter.ps1
Normal file
41
message-counter.ps1
Normal file
@ -0,0 +1,41 @@
|
||||
<#
|
||||
.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
|
||||
Reference in New Issue
Block a user