o355developer A common though uneven way of doing this is searching by the first character of each name.
#Get-Mailbox A*, Get-Mailbox B*, etc.
(1..9),(65..90) | foreach {Get-Mailbox "$([char]$_)*" -ResultSize Unlimited}There's also any of the million properties you can filter on as well.
Also is there a specific reason you can't use Get-ExoRecipient? Or at least use it to get all users, break it into batches, and then use get-mailbox on those results? I can't think of many reasons your script would need to pull all 1.5 million users every single time, and maybe you can use the -Property parameter to narrow it down to just the properties you want and speed up the query?