-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDRMM-ImprovedExchangeQueueMonitor.ps1
25 lines (19 loc) · 1.12 KB
/
DRMM-ImprovedExchangeQueueMonitor.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Exchange Message Queue Monitor
# version 1.1
# Lee Mackie: Added diagnostic step to get queue items
function Write-DRMMAlert ($message) {
write-host '<-Start Result->'
write-host "Alert=$message"
write-host '<-End Result->'
}
$maxQueueLength = $env:maxQueueLength # Max Message Queue Length
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction SilentlyContinue # Exchange 2007
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue # Exchange 2010/2013
$queueLength = Get-ExchangeServer | Where-Object { $_.IsHubTransportServer -eq $true } | Get-Queue | ForEach-Object -Begin { $messageCountTotal = 0 } -Process { $messageCountTotal += $_.MessageCount } -End { $messageCountTotal }
If ( $queueLength -gt $maxQueueLength ) {
Write-DRMMAlert "Message queue length ($queueLength) is greater than maximum message queue length ($maxQueueLength)"
Write-Host '<-Start Diagnostic->'
Get-ExchangeServer | Where-Object { $_.IsHubTransportServer -eq $true } | Get-Queue | Get-Message | Select-Object FromAddress,Queue,Subject
Write-Host '<-End Diagnostic->'
Exit 1
}