Share via

Get-Recipient intermittently exhibit high latency, partial result sets, or timeout exceptions.

Wortles Aslanbekov 20 Reputation points
2026-04-18T04:00:29.16+00:00

Our remote PowerShell sessions established via the Exchange Management Shell WinRM connect successfully, but core cmdlets such as Get-Mailbox, Get-Queue, and Get-Recipient intermittently exhibit high latency, partial result sets, or timeout exceptions.

Despite all Exchange services reporting healthy and no recent changes to RBAC, virtual directories, or IIS configuration, the issue appears inconsistent across CAS/Mailbox servers and persists across multiple sessions

Exchange | Exchange Server | Management
Exchange | Exchange Server | Management

The administration and maintenance of Microsoft Exchange Server to ensure secure, reliable, and efficient email and collaboration services across an organization.

0 comments No comments

Answer accepted by question author

  1. Steven-N 25,305 Reputation points Microsoft External Staff Moderator
    2026-04-18T08:28:14.45+00:00

    Hi Wortles Aslanbekov

    Based on my research, this behavior stems from two resource ceilings beneath the Exchange layer.

    • First, the WinRM shell 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 PowerShellMaxConcurrency and ExchangeMaxCmdlets per 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.


0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.