The administration and maintenance of Microsoft Exchange Server to ensure secure, reliable, and efficient email and collaboration services across an organization.
Based on my research, this behavior stems from two resource ceilings beneath the Exchange layer.
- First, the
WinRMshell quota limits memory allocated per remote shell when breached by large result sets, the pipeline truncates silently with no explicit error. - Second, Exchange's throttling policy caps
PowerShellMaxConcurrencyandExchangeMaxCmdletsper connecting account once exhausted, cmdlets queue or return partial data without any visible throttling message.
Link reference: New-ThrottlingPolicy (ExchangePowerShell) | Microsoft Learn
In this situation, you can try the approaches below:
Step 1: Correct WinRM shell memory quota on each CAS/Mailbox server.
Behavior is unsupported if MaxMemoryPerShellMB is set below the default of 1024 MB. This document verify and correct on each server:
winrm get winrm/config/winrs
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}'
winrm set winrm/config/winrs '@{MaxConcurrentUsers="20"}'
winrm set winrm/config/winrs '@{MaxShellsPerUser="15"}'
Step 2: Create a dedicated throttling policy for admin/automation accounts.
Microsoft recommends against modifying the default GlobalThrottlingPolicy as it may be overwritten by future Exchange updates. Create a custom policy instead.
New-ThrottlingPolicy -Name "EMS-Admin-Policy" `
-PowerShellMaxConcurrency 20 `
-PowerShellMaxRunspaces 25 `
-ExchangeMaxCmdlets Unlimited `
-IsServiceAccount
Set-ThrottlingPolicyAssociation -Identity "svc-exchangeadmin" `
-ThrottlingPolicy "EMS-Admin-Policy"
Hope my answer will help you.
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.