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