Counting in Microsoft Exchange using PowerShell
Scenario:
Counting in Microsoft Exchange using PowerShell.
Get the number of the below in Microsoft Exchange:
- Number of mailboxes in Microsoft Exchange and separate them by UserMailbox, SharedMailbox and RoomMailbox
- Number of contacts in Microsoft Exchange and separate them by contact and mail contacts
- Number of groups in Microsoft Exchange and separate them by distribution and security groups.
Connect on Microsoft Exchange OnPremise:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange.domain.com/PowerShell/ -Authentication Kerberos
Import-PSSession $Session
Connect on Microsoft Exchange Online:
$Credentials = $host.ui.PromptForCredential("Need credentials", "Provide Cloud User Admin Password Name Surname.", "name@domain.com", "UserName")
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Credentials -Authentication Basic -AllowRedirection
Import-PSSession $Session
Options for RecipientTypeDetails in Get-Mailbox:
- DiscoveryMailbox
- EquipmentMailbox
- GroupMailbox
- LegacyMailbox
- LinkedMailbox
- LinkedRoomMailbox
- RoomMailbox
- SchedulingMailbox
- SharedMailbox
- TeamMailbox
- UserMailbox
Options for RecipientTypeDetails in Get-Contact:
- Contact
- MailContact
- MailForestContact
Options for RecipientTypeDetails in Get-DistributionGroup:
- MailNonUniversalGroup
- MailUniversalDistributionGroup
- MailUniversalSecurityGroup
- RoomList
Related Links:
- PowerShell Tutorials
- PowerShell Scripts
- Get-Mailbox – TechNet – Microsoft
- Get-Contact – TechNet – Microsoft
- Get-MailContact – TechNet – Microsoft
- Get-DistributionGroup – TechNet – Microsoft
- Import-PSSession – Microsoft Docs
- New-PSSession – Microsoft Docs
- Write-Host – Microsoft Docs
Solution / Script:
$Mailboxes = (Get-Mailbox -ResultSize Unlimited).count
$UserMailboxes = (Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox).count
$RoomMailboxes = (Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails RoomMailbox).count
$SharedMailboxes = (Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox).count
$Contacts = (Get-Contact -ResultSize Unlimited).count
$MailContacts = (Get-Contact -ResultSize Unlimited -RecipientTypeDetails MailContact).count ###or you can use (Get-MailContact -ResultSize Unlimited).count
$Groups = (Get-DistributionGroup -ResultSize Unlimited).count
$DistributionGroups = (Get-DistributionGroup -ResultSize Unlimited -RecipientTypeDetails MailUniversalDistributionGroup).count
$SecurityGroups = (Get-DistributionGroup -ResultSize Unlimited -RecipientTypeDetails MailUniversalSecurityGroup).count
Write-Host "Number of mailboxes: $Mailboxes"
Write-Host "Number of user mailboxes: $UserMailboxes"
Write-Host "Number of room mailboxes: $RoomMailboxes"
Write-Host "Number of shared mailboxes: $SharedMailboxes"
Write-Host "Number of contacts: $Contacts"
Write-Host "Number of mail contacts: $MailContacts"
Write-Host "Number of groups: $Groups"
Write-Host "Number of distribution groups: $DistributionGroups"
Write-Host "Number of security groups: $SecurityGroups"
Summary

Article Name
Counting in Microsoft Exchange using PowerShell
Description
Counting in Microsoft Exchange using PowerShell. Scripts that you can count user mailboxes, shared mailboxes, room mailboxes, contacts mail contacts, distribution groups, and security groups in Microsoft Exchange. Stephanos Constantinou Blog - PowerShell Scripting
Author
Stephanos
Publisher Name
Stephanos Constantinou Blog
Publisher Logo

[…] Counting in Microsoft Exchange using PowerShell […]